VBA-tekenreeks tot nu toe - Converteer tekenreekswaarden naar datum in Excel VBA

Excel VBA-tekenreeks tot nu toe

In Vba is er een methode waarmee we een bepaalde string naar een datum kunnen converteren, en de methode staat bekend als CDATE-functie in vba, dit is een ingebouwde functie in VBA en de onderdelen die nodig zijn voor deze functie zijn om de string eerst naar een getal en dan converteren we het gegeven getal naar een datum. Het resultaatformaat is alleen afhankelijk van de systeemdatumopmaak.

Een van de meest voorkomende problemen waarmee we allemaal worden geconfronteerd met Excel is "Datum en tijd" en wordt vaak opgeslagen als tekstwaarden en blijft in eerste instantie onopgemerkt. Maar als ze die tijd moeten gebruiken, zullen we te weten komen dat die waarden als tekst zijn opgeslagen en helemaal niet weten hoe we ermee moeten omgaan. "Datum en tijd" zijn twee gecombineerde dingen in één element, maar als die waarden eenmaal zijn opgeslagen als tekstwaarden, is het lastig om mee te werken.

Hoe tekenreekswaarden naar datum te converteren?

Voorbeeld 1

Zodra de VBA-variabele is gedeclareerd en toegewezen als String, wordt alles dat aan die variabele is toegewezen, alleen als string behandeld. Kijk bijvoorbeeld naar de onderstaande code.

Code:

Sub String_To_Date () Dim k As String k = "10-21" MsgBox k End Sub

In de bovenstaande code wordt variabele "k" gedefinieerd als het gegevenstype "String", en voor deze variabele hebben we de waarde toegewezen als "10-21".

Oké, laten we de code uitvoeren en kijken wat we in het berichtvenster in VBA krijgen.

We hebben alleen de waarde 10-21, maar meestal zijn deze waarden een datum, geen tekenreekswaarden. Dus ook al is het toegewezen gegevenstype "String", we kunnen nog steeds naar datum converteren met behulp van de datatype-conversiefunctie CDATE VBA.

Code:

Sub String_To_Date () Dim k As String k = "10-21" MsgBox CDate (k) End Sub

In het bovenstaande hebben we, voordat we het resultaat van de variabele “k” in het berichtvenster laten zien, de functie CDATE toegewezen. Er wordt een kleine aanpassing gemaakt, laten we eens kijken hoe groot de impact is.

Nu zouden we het resultaat zien als "Datum" en niet langer als "String" -waarde.

Voorbeeld 2

Bekijk nu de onderstaande code voor een voorbeeld.

Code:

Sub String_To_Date () Dim k As String k = 43599 MsgBox k End Sub

Op dit moment zou de bovenstaande code het resultaat weergeven als "43599", zoals we hierboven hebben toegewezen.

Maar zodra we de CDATE-functie gebruiken, wordt deze geconverteerd naar de datumwaarde.

Code:

Sub String_To_Date () Dim k As String k = 43599 MsgBox CDate (k) End Sub

Het resultaat na het toepassen van de CDATE-functie is als volgt.

Omdat Excel de datum als serienummers heeft opgeslagen, is ons toegewezen serienummer 43599 gelijk aan de datum 14/05/2019 wanneer het datumnotatie wordt toegepast.

We kunnen het formaat ook toepassen op de datum als "DD-MMM-JJJJ" om de datum nauwkeurig te lezen.

Code:

Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) MsgBox-indeling (DateValue, "DD-MMM-YYYY") End Sub

In het bovenstaande heb ik een extra variabele gedeclareerd om het resultaat op te slaan. Voor deze variabele heb ik de conversiefunctie CDATE toegepast.

Vervolgens heb ik de FORMAT-functie gebruikt om het formaat van het "DD-MMM-JJJJ" -formaat toe te passen, en het resultaat zal zijn zoals hieronder getoond.

Hiermee kunnen we het dagdeel en maanddeel duidelijk aflezen. Het hangt ook af van de datumnotatie van uw systeem in Excel. Aangezien de datumnotatie van mijn systeem "MM-DD-JJJJ" was, werd het zo weergegeven, maar dat zou geen belemmering moeten zijn om te formatteren.

Voorbeeld # 3

Nu zullen we zien hoe datums worden opgemaakt als tekstwaarden in werkbladcellen. Hieronder ziet u de afbeelding van de datums die zijn opgeslagen als tekst in een werkblad.

In kolom A van A2 tot A12 hebben we waarden die op datum lijken, maar als we naar het tabblad Opmaak kijken, wordt het "Tekst" -formaat weergegeven. Nu moeten we deze waarden van tekst naar datum converteren.

Hieronder staat de code die ik heb geschreven om de tekstopgemaakte datumwaarden om te zetten in werkelijke datums.

Code:

Sub String_To_Date2 () Dim k As Long 'Gegevens bevinden zich in meer dan één cel, dus u moet elke cel doorlopen' Open voor lus voor k = 2 tot 12 'Gegevens beginnen vanaf de 2e rij en eindigen op de 12e rij, dus 2 tot 12 Cellen (k, 2) .Value = CDate (Cellen (k, 1) .Value) Volgende k End Sub

Als u de code uitvoert, krijgt u het onderstaande resultaat.

Dingen om te onthouden

  • CDATE is een datatype-conversiefunctie, maar kan worden gebruikt om VBA-tekenreeks opgeslagen datum om te zetten naar werkelijke datumwaarden.
  • Het resultaat van het CDATE-functieformaat is alleen afhankelijk van de systeemdatumopmaak.
  • Datums worden in Excel opgeslagen als serienummers, dus opmaak is vereist om ze als datums weer te geven.

Interessante artikelen...