VBA-format Datum

Excel VBA-format Datum

För att formatera ett datum i VBA använder vi den inbyggda FORMAT-funktionen i sig, det tar inmatning som datumformat och returnerar önskat format som krävs, de argument som krävs för denna funktion är själva uttrycket och formattypen.

Formatering av datum och tid är känsliga saker i Excel och samma sak tillämpas också på VBA. Standarddatum och -tid är baserade på det systemdatum då vi arbetar, vilket kan variera från system till system. I den här artikeln visar vi dig olika tekniker för att formatera datum med VBA-koder.

För att ändra datumformat med VBA-kodning måste vi vara medvetna om vilka datumformat som är och dess inverkan på datumet.

Tabellen nedan visar olika datumformatering och deras koder.

Så om du tänker på ovanstående diagram är formatering av datum genom VBA-kodning inte den tuffa uppgiften alls.

Hur ändrar jag datumformat i VBA?

Nedan följer exemplen på Excel VBA-datumformat.

Du kan ladda ner denna Excel-mall för VBA-format här - VBA-format för Excel-mall för datum

Exempel nr 1

Till exempel har vi samma datum i flera celler i kalkylbladet som visas nedan.

Nu kommer vi att använda olika datumformat för samma datum för att se effekten på olika datumformatkoder.

Kopiera först samma data till nästa kolumn för att se effekten.

För det första datumet, dvs cell A1, kommer vi att använda formatet “DD-MM-ÅÅÅÅ” .

I koden måste vi först välja cellen med RANGE- objektet.

Koda:

 Sub Date_Format_Example1 () Range ("A1") End Sub 

Eftersom vi ändrar datumformatet för cellen måste vi komma åt egenskapen " Nummerformat " för RANGE-objektet.

Koda:

 Sub Date_Format_Example1 () Range ("A1"). NumberFormat End Sub 

Efter att ha öppnat " Number Format " måste vi ställa in nummerformatet genom att sätta lika tecken och tillämpa formatkoden i dubbla citat.

Koda:

 Sub Date_Format_Example1 () Range ("A1"). NumberFormat = "dd-mm-yyy" 'Detta kommer att chnage datumet till "23-10-2019" End Sub 

När vi kör den här koden kommer nummerformatet att tillämpas på cellen A1 som " DD-MM-ÅÅÅ ".

Produktion:

Exempel 2

På samma sätt har jag också använt olika formateringskoder för andra celler och nedan är VBA-koden för dig.

Koda:

Sub Date_Format_Example2 () Range ("A1"). NumberFormat = "dd-mm-ååå" "Detta ändrar datumet till" 23-10-2019 "Range (" A2 "). NumberFormat =" ddd-mm-yyy " 'Detta ändrar datumet till "Ons-10-2019" -intervall ("A3"). NumberFormat = "dddd-mm-åååå" "Detta ändrar datumet till" Onsdag-10-2019 "-intervall (" A4 ") .NumberFormat = "dd-mmm-ååå" "Detta ändrar datumet till" 23-okt-2019 "-intervall (" A5 "). NumberFormat =" dd-mmmm-ååå "" Detta ändrar datumet till "23- Oktober-2019 "Range (" A6 "). NumberFormat =" dd-mm-yy "'Detta ändrar datumet till" 23-10-19 "Range (" A7 "). NumberFormat =" ddd mmm yyyy "' Detta ändrar datumet till "Ons okt 2019 "Range (" A8 "). NumberFormat =" dddd mmmm åååå "" Detta ändrar datumet till "onsdag oktober 2019" Slut Sub

Resultatet av den här koden blir följande.

Produktion:

Ändra datumformat med hjälp av FORMAT-funktionen

I VBA har vi en funktion som heter FORMAT som kan användas för att tillämpa önskat format på cellen.

Vi behöver bara ange vad värdet är för "Expression" och tillämpa "Format" därefter.

Titta på koden nedan för ett exempel.

Koda:

 Sub Date_Format_Example3 () Dim MyVal As Variant MyVal = 43586 MsgBox Format (MyVal, "DD-MM-YYYY") End Sub 

I ovanstående kod har jag definierat variabeln som variant (som kan innehålla vilket värde som helst).

Koda:

 Dim MyVal Som Variant 

Nästa för denna variabel har jag tilldelat värdet 43586.

Koda:

MyVal = 43586

Nästa i meddelandefältet har jag visat resultatet av variabeln, men innan vi visar resultatet har vi använt “ FORMAT ” -funktionen för att formatera värdet på variabeln “ MyVal ” och formatet ges är “ DD-MM- ÅÅÅÅ ”.

Koda:

MsgBox-format (MyVal, "DD-MM-ÅÅÅ")

Ok, låt oss köra koden och se resultatet i meddelandefältet i VBA.

Produktion:

Som du kan se ovan visas resultatet som “ 01-05-2019 ”.

Nu måste du undra att vi har angett serienummer men resultatet visas som datum. Detta beror på att Excel lagrar datum som serienummer, så värdet 43586 är lika med datumet "01-05-2019" och om du ökar antalet med 1 dvs 43587 kommer datumet att vara "02-05-2019".

Koda:

 Sub Date_Format_Example3() Dim MyVal As Variant MyVal = 43586 MsgBox Format(MyVal, "DD-MM-YYY") End Sub 

Things to Remember

  • The default date of your system will be applied to your excel as well.
  • Number Format property can be used to change the date format in VBA.
  • Using the FORMAT function, we can change the date format.
  • Excel stores date as serial numbers and if you apply date format it will show accordingly.