Differenza tra DateValue e CDate in VBA

Sono nuovo di VBA e sto lavorando su un modulo di leggere i dati da un foglio di calcolo e di calcolare i valori in base alle date dal foglio di calcolo. Ho letto le variabili come una Stringa e poi sto cambiando i valori di una Data utilizzando CDate. Tuttavia ho appena imbattuto in DateValue e mi chiedevo che cosa la differenza tra le due funzioni sono e quale è il migliore da utilizzare.

 

3 Replies
  1. 24

    DateValue tornerà solo la data. CDate volontà di preservare la data e l’ora:

    ? DateValue("2014-07-24 15:43:06")
    24/07/2014
    
    ? CDate("2014-07-24 15:43:06")
    24/07/2014 15:43:06 

    Allo stesso modo, è possibile utilizzare TimeValue per restituire solo la parte del tempo:

    ? TimeValue("2014-07-24 15:43:06")
    15:43:06 
    
    ? TimeValue("2014-07-24 15:43:06") > TimeSerial(12, 0, 0)
    True

    Anche, come guitarthrower dice, DateValue (e TimeValue) si accettano solo String parametri, mentre CDate in grado di gestire anche i numeri. Per emulare queste funzioni, per i tipi numerici, utilizzare CDate(Int(num)) e CDate(num - Int(num)).

  2. 4

    CDate consentirà di convertire un numero o un testo per una data.

    CDate(41035) 'Converts to a date of 5/6/2012
    CDate("1/15/2014") 'Converts to a date of 1/15/2014

    DateValue convertire la data in formato testo (solo) per una data.

    DateValue("1/15/2014") 'Converts to a date of 1/15/2014
    DateValue(41035) 'Throws a mismatch error
  3. 3

    Sia CDate e DateValue, quando utilizzato in vba, converte un valore in una Data (gg/mm/aaaa):

    1)

    LstrDate = "July 24, 2014"

    LDate = CDate(LstrDate)

    2)

    LDate = DateValue("July 24, 2014")

    Entrambi restituiscono lo stesso risultato.

    Tuttavia DateValue restituisce il numero seriale della data, se utilizzato a livello di applicazione (foglio di calcolo)

    • non conoscevo la funzione di foglio di calcolo, la differenza. Buono a sapersi.

Lascia un commento