VBA Date-funktion (12 användningsområden för makron med exempel)

  • Dela Detta
Hugh West

I Microsoft Visual Basic Application är datumfunktioner eller datumrelaterade begrepp viktiga för att utföra olika operationer i ditt dataset. Du kan hamna i olika situationer där du måste använda dessa funktioner. I den här handledningen kommer du att lära dig om Date-funktionen i VBA med lämpliga exempel och korrekta illustrationer. Vi kommer också att ge dig flera datumfunktioner.som du kan använda i ditt kalkylblad.

Ladda ner övningsboken

Användning av VBA Date.xlsm

Introduktion till VBA Date-funktionen

Excel kategoriserar datum i kategorierna Datum/tid Det är en inbyggd funktion. Vi kan använda den i VBA-makron för att utföra alla datarelaterade operationer.

Innan du börjar använda datumfunktionen måste du känna till Datumvariabler i VBA .

⏺ Syntax

Datum()

⏺ Argument Förklaringar

Det finns inga argument.

⏺ Returer

Återger det aktuella datumet.

⏺ Finns i

Excel för Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 för Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000

⏺ Exempel

Som du vet finns det inga argument, du kan bara ange det på följande sätt:

 Sub vba_date() Dim current_date As Date current_date = Date MsgBox current_date End Sub 

När vi arbetar med Date-funktionen anger vi inga parenteser i VBA-koderna som i det här exemplet.

Utgång :

12 datumfunktioner i VBA som du bör lära dig

Nu, i de kommande avsnitten, kommer vi att visa dig några ytterligare datumfunktioner som du kan använda för många olika ändamål i VBA. Läs de här avsnitten för att lära dig alla möjliga sätt att arbeta med datum i VBA. Vi föreslår att du behåller dem i din arsenal. Det kommer säkert att förbättra dina kunskaper.

1. DateAdd-funktionen som datum i VBA

I VBA använder vi funktionen DateAdd för att lägga till dagar i ett visst datum. Därefter returneras det resulterande datumet.

Syntax:

DateAdd(intervall, antal, datum)

Argument:

intervall: Det är Required. String expression är det tidsintervall som du vill lägga till.

nummer: Krävs. Det är ett numeriskt uttryck som är antalet intervaller som du vill lägga till. Det kan vara positivt (för att få datum i framtiden) eller negativt (för att få datum i det förflutna).

datum: Det ursprungliga datumet/tiden.

Nu har Intervall argumenten kan ha följande inställningar:

yyyy - År

q - Kvartal

m - Månad

y - Årets dag

d - Dag

w - Veckodag

ww - Vecka

h - Timme

n - Protokoll

s - Andra

Kodutdrag :

 Sub dateadd_function() Dim result_Date As Date result_Date = DateAdd("d", 15, "1/31/2022") MsgBox result_Date End Sub 

Utgång:

Som du kan se har den lagt till 15 datum i det aktuella datumet i VBA.

Läs mer: Hur man använder IsDate-funktionen i VBA (3 exempel)

2. DateDiff-funktionen i VBA

Funktionen DateDiff returnerar en Variant (Long) som bestämmer antalet tidsavstånd mellan två angivna datum.

Syntax :

DateDiff(intervall, date1, date2, [ firstdayofweek, [ firstweekofyear ]] )

Argument:

intervall: Den är obligatorisk. Stränguttryck är det tidsintervall som du vill lägga tillStränguttryck som är det tidsintervall som du använder för att beräkna skillnaden mellan två datum.

date1,date2 : Krävs; Variant (Datum). Två datum som du vill använda i beräkningen.

veckans första dag: Valfritt: En konstant som definierar veckans första dag. Om den inte är fastställd antas söndag.

första veckan av året: Valfritt: En konstant som fastställer årets första vecka. Om den inte är inställd ska den första veckan vara den vecka då den 1 januari visas.

Nu har Intervall argumenten kan ha följande inställningar:

yyyy - År

q - Kvartal

m - Månad

y - Årets dag

d - Dag

w - Veckodag

ww - Vecka

h - Timme

n - Protokoll

s - Andra

veckans första dag argumentet har dessa inställningar:

vbSunday - använder söndagen som veckans främsta dag.

vbMonday - använder måndag som veckans första dag.

vbTuesday - använder tisdag som veckans första dag.

vbWednesday - använder onsdag som veckans första dag.

vbThursday - använder torsdag som veckans första dag.

vbFriday - använder fredagen som veckans första dag.

vbSaturday - använder lördag som veckans första dag.

vbUseSystemDayOfTheWeek - använder den första veckodagen som definieras i enhetens inställning.

årets första vecka har dessa inställningar:

vbFirstJan1 - använder sig av veckan som innehåller den 1 januari.

vbFirstFourDays - anställer den första veckan med minst fyra dagar under det nya året.

vbFirstFullWeek - är i drift under årets första hela vecka.

vbSystem - använder den första veckan på året som definieras av enhetens plats.

Kodutdrag:

 Sub DateDiff_Function() Dim result As Long result = DateDiff("d", "1/31/2022", "2/12/2022") MsgBox result End Sub 

Utgång :

I slutändan returneras skillnaden mellan de två datumen i VBA.

Läs mer: Hur man använder VBA DateDiff-funktionen i Excel (9 exempel)

3. DatePart Funktion som datum

Funktionen DatePart returnerar en variant (heltal) som innehåller den definierade delen av ett angivet datum.

Syntax :

DatePart(intervall, datum, [ firstdayofweek, [ firstweekofyear ]])

Argument:

intervall: Den är obligatorisk. Stränguttryck är det tidsintervall som du vill lägga tillStränguttryck som är det tidsintervall som du använder för att beräkna skillnaden mellan två datum.

datum: Krävs; Variant (Datum): Det datum som du vill använda i beräkningen.

veckans första dag: Valfritt: En konstant som definierar veckans första dag. Om den inte är fastställd antas söndag.

första veckan av året: Valfritt: En konstant som fastställer årets första vecka. Om den inte är inställd ska den första veckan vara den vecka då den 1 januari visas.

Nu har Intervall argumenten kan ha följande inställningar:

yyyy - År

q - Kvartal

m - Månad

y - Årets dag

d - Dag

w - Veckodag

ww - Vecka

h - Timme

n - Protokoll

s - Andra

veckans första dag argumentet har dessa inställningar:

vbSunday - använder söndagen som veckans främsta dag.

vbMonday - använder måndag som veckans första dag.

vbTuesday - använder tisdag som veckans första dag.

vbWednesday - använder onsdag som veckans första dag.

vbThursday - använder torsdag som veckans första dag.

vbFriday - använder fredagen som veckans första dag.

vbSaturday - använder lördag som veckans första dag.

vbUseSystemDayOfTheWeek - använder den första veckodagen som definieras i enhetens inställning.

årets första vecka har dessa värden:

vbFirstJan1 - fungerar veckan inklusive den 1 januari.

vbFirstFourDays - använder sig av den första veckan som har högst fyra underdimensionerade dagar under det nya året.

vbFirstFullWeek - utnyttjar den första hela veckan på året.

vbSystem - använder den första veckan på året som valts av enhetens plats.

Kodutdrag :

 Sub DatePart_Function() Dim result As Integer result = DatePart("m", "10/11/2022") MsgBox result End Sub 

Utgång :

På så sätt kan du använda den här datumfunktionen i VBA-koder.

Läs mer: Hur man använder VBA FileDateTime-funktionen i Excel (3 användningsområden)

4. DateSerial-funktionen

Du kan se ett datum baserat på ett inmatat år, månad och dag med hjälp av DateSerial funktion.

Syntax:

DateSerial(år, månad, dag)

Argument:

år - Obligatoriskt fält. Ett tal mellan 100 och 9999, inklusive, eller ett numeriskt uttryck som symboliserar året.

månad - Obligatoriskt fält. Ett heltalsvärde som definierar månaden.

dag - Obligatoriskt fält. Ett heltalsvärde som beskriver dagen.

Kodutdrag:

 Sub date_serial() Dim date_special As Date date_special = DateSerial(2022, 1, 11) MsgBox date_special End Sub 

Utgång :

Läs mer: Hur man använder VBA TimeSerial i Excel (3 exempel)

4. VBA DateValue-funktionen

Nu använder vi funktionen DateValue för att definiera ett datum.

Syntax :

DateValue(datum)

Argument:

Här kan datum argumentet är vanligtvis ett stränguttryck som beskriver ett datum från den 1 januari 100 till den 31 december 9999. Datumet kan dessutom vara vilket uttryck som helst som kan symbolisera ett datum, en tid eller både ett datum och en tid inom det intervallet.

Kodutdrag:

 Sub Date_value() Dim result As Date result = DateValue("January, 10, 2022") MsgBox result End Sub 

Utgång :

Som du kan se har vi lyckats använda datumfunktionen i VBA-koder.

5. Dagfunktion i VBA

Den returnerar en variant (heltal) som anger ett verkligt tal mellan 1 och 31, inklusive, som förmedlar månadens dag.

Syntax :

Dag(datum)

Argument:

Det obligatoriska argumentet för datumet är en Variant, ett numeriskt uttryck, ett stränguttryck eller en kombination av dessa. Det representerar ett datum. Om datumet innehåller noll kommer det också att ge noll.

Kodutdrag:

 Sub day_function() Dim date1, the_day date1 = #12/12/2023# the_day = Day(date1) MsgBox the_day End Sub 

Utgång:

Som du kan se har vi med hjälp av VBA-koderna kommit fram till att dagen för det givna datumet är 12.

Relaterat innehåll: VBA-formatfunktion i Excel (8 användningsområden med exempel)

6. VBA Månadsfunktion som datum

Den returnerar en variant (heltal) som definierar ett verkligt tal mellan 1 och 12, inklusive, som anger årets månad.

Syntax :

Månad(datum)

Argument:

Det obligatoriska argumentet för datumet är en Variant, ett numeriskt uttryck, ett stränguttryck eller en kombination av dessa. Det representerar ett datum. Om datumet innehåller noll kommer det också att ge noll.

Kodutdrag:

 Sub month_function() Dim date1, the_month date1 = #12/12/2023# the_month = Month(date1) MsgBox the_month End Sub 

Utgång:

Relaterat innehåll: Hur du använder VBA Right-funktionen i Excel (6 exempel)

Liknande läsningar

  • Hur du använder VBA-funktionen Environ (4 exempel)
  • Hur man använder VBA och funktion i Excel (4 exempel)
  • VBA If - Then - Else Statement i Excel (4 exempel)
  • Hur du använder VBA Abs-funktionen i Excel (9 exempel)
  • Hur man använder Concatenate i Excel VBA (4 metoder)

7. Funktionen MonthName

Den returnerar en sträng som visar den angivna månaden.

Syntax :

Månadsnamn(månad, [ förkortning ])

Argument:

månad: Den är nödvändig. Månadens numeriska titel. Januari är t.ex. 1, februari är 2 och så vidare.

förkorta: Det är valfritt. Boolskt värde som visar om månadsnamnet ska förkortas. Om det inte används är standardvärdet False, vilket innebär att månadsnamnet inte ska förkortas.

Kodutdrag:

 Sub MonthName_Function() Dim month_name As String month_name = MonthName(9, True) MsgBox month_name End Sub 

Utgång:

Som du kan se har vi hittat månadens namn med hjälp av denna VBA Date Function.

8. Funktion för veckodagar

Den returnerar en Variant ( Heltal ) med ett verkligt tal som anger veckodagen.

Syntax :

Veckodag(datum, [ veckans första dag ])

Argument:

datum: Det obligatoriska argumentet för datumet är en Variant, ett numeriskt uttryck, ett stränguttryck eller en kombination av dessa. Det representerar ett datum. Om datumet innehåller noll kommer det också att ge noll.

veckans första dag: Valfritt: En konstant som definierar veckans första dag. Om den inte är fastställd antas söndag.

veckans första dag argumentet har dessa inställningar:

vbSunday - använder söndagen som veckans främsta dag.

vbMonday - använder måndag som veckans första dag.

vbTuesday - använder tisdag som veckans första dag.

vbWednesday - använder onsdag som veckans första dag.

vbThursday - använder torsdag som veckans första dag.

vbFriday - använder fredagen som veckans första dag.

vbSaturday - använder lördag som veckans första dag.

vbUseSystemDayOfTheWeek - använder den första veckodagen som definieras i enhetens inställning.

Parametrar för återlämning

Den här funktionen returnerar ett heltal, så betydelsen av dessa heltal är följande:

1 - Söndag

2 - Måndag

3 - Tisdag

4 - Onsdag

5 - Torsdag

6 - Fredag

7 - Lördag

Kodutdrag:

 Sub Weekday_Function() Dim week_day As Integer week_day = Weekday("4/27/2022") MsgBox week_day End Sub 

Utgång:

Som du kan se ger VBA-datumfunktionen 4. Det betyder onsdag.

Relaterat innehåll: Hur man använder Fix-funktionen i Excel VBA (4 exempel)

9. VBA-funktionen WeekdayName

Återger en sträng som visar den begränsade veckodagen.

Syntax :

WeekdayName(veckodag, förkortning, veckans första dag)

Argument:

vardag: Obligatoriskt fält. Den numeriska identifieringen för veckodagen. Det numeriska värdet för varje dag beror på inställningen för firstdayofweek.

förkorta: Detta är valfritt. Boolskt värde som anger om veckodagens namn ska förkortas. Om det inte anges är standardvärdet False, vilket innebär att veckodagens namn inte förkortas eller förkortas.

veckans första dag: Frivilligt fält. Numeriskt värde som anger veckans första dag. Det kan ha olika värden.

veckans första dag kan ha följande värden:

vbSunday - använder söndagen som veckans främsta dag.

vbMonday - använder måndag som veckans första dag.

vbTuesday - använder tisdag som veckans första dag.

vbWednesday - använder onsdag som veckans första dag.

vbThursday - använder torsdag som veckans första dag.

vbFriday - använder fredagen som veckans första dag.

vbSaturday - använder lördag som veckans första dag.

vbUseSystemDayOfTheWeek - använder den första veckodagen som definieras i enhetens inställning.

Kodutdrag:

 Sub WeekdayName_Function() Dim weekday_name As String weekday_name = WeekdayName(6) MsgBox weekday_name End Sub 

Utgång:

Som du kan se visar VBA-koderna ovan veckodagsnamnet.

Relaterat innehåll: Hur du använder VBA-funktionen WeekdayName i Excel (2 exempel)

10. Årfunktion i VBA Date

Den returnerar en variant (heltal) med ett verkligt tal som uttrycker året.

Syntax :

År(datum)

Argument:

Det obligatoriska datumargumentet är en Variant, ett numeriskt uttryck, ett stränguttryck eller en kombination av dessa. Det representerar ett datum. Om datumet innehåller noll kommer det också att ge noll.

Kodutdrag:

 Sub year_function() Dim date1, the_year date1 = #12/12/2023# the_year = Year(date1) MsgBox the_year End Sub 

Utgång:

Här kan du se året för det givna datumet efter att du har implementerat VBA-koden.

Läs mer: Hur du använder VBA Ersätt funktionen i Excel (11 program)

11. Funktionen FormatDateTime

Den här funktionen returnerar ett uttryck formaterat som ett datum eller en tid.

Syntax :

FormatDateTime(Datum, [ NamedFormat ])

Argument:

Datum: Obligatoriskt fält. Datumuttryck som ska formateras.

NamedFormat: Detta är valfritt. Det är ett numeriskt värde som visar datum/tid-formatet. Om det utelämnas används vbGeneralDate .

NamedFormat kan ha följande värden:

vbGeneralDate(0): Visa ett datum och/eller en tid. Om det finns en datumdel, visa den som ett kort datum. Om det finns en tidsdel, visa den som en lång tid. Båda delarna visas om de finns.

vbLongDate(1): Visa ett datum genom att använda den långa datumkonfiguration som valts i datorns regionala inställningar.

vbShortDate(2): Visa ett datum genom att använda det korta datumformat som anges i datorns regionala inställningar.

vbLongTime(3): Visa en tid genom att använda det tidsformat som anges i datorns regionala inställningar.

vbShortTime(4): Visa en tid i 24-timmarsformat (hh:mm).

Kodutdrag:

 Sub FormatDateTime_Function() d = ("2022-02-03 18:25") MsgBox ("Format 1 : " & FormatDateTime(d)) MsgBox ("Format 2 : " & FormatDateTime(d, 1)) MsgBox ("Format 3 : " & FormatDateTime(d, 2)) MsgBox ("Format 4 : " & FormatDateTime(d, 3)) MsgBox ("Format 5 : " & FormatDateTime(d, 4)) End Sub 

Utgång:

Följande dialogrutor visas när du kör koden:

Här kan du se alla tids- och datumformat i VBA.

Läs mer: Hur du använder VBA-funktionen TimeValue (6 relevanta exempel)

12. VBA CDate-funktionen

Funktionen omvandlar ett giltigt datum- och tidsuttryck till ett typiskt datum.

Syntax :

CDate(datum)

Argument:

Det obligatoriska argumentet för datumet är en Variant, ett numeriskt uttryck, ett stränguttryck eller en kombination av dessa. Det representerar ett datum. Om datumet innehåller noll kommer det också att ge noll.

Kodutdrag:

 Sub Cdate_Function() Dim date1 As Variant Dim date2 As Variant date1 = CDate("Mar 11 2022") date2 = CDate("29 Sep 2023") MsgBox ("Första datum: " & date1 & vbCrLf & "Andra datum: " & date2) End Sub 

Utgång:

Som du kan se returnerade vår VBA-kod just ett typiskt datumformat för Excel.

Relaterat innehåll: Hur man använder VBA DIR-funktionen i Excel (7 exempel)

Exempel på VBA Date

I följande avsnitt kommer vi att ge dig tre praktiska och lämpliga exempel på datum med hjälp av VBA. Exemplen kommer att innehålla datarelaterade problem och deras lösningar. Vi rekommenderar att du läser och övar alla dessa exempel för att förbättra dina VBA-kunskaper. Låt oss gå in i det.

1. Beräkna förfallna dagar med hjälp av datum i VBA

Innebörden av overdue är att det sker sent eller efter tidsfristen. sent, särskilt efter en tidsfrist eller för sent för att uppfylla ett krav.

Anta att du måste lämna in en uppgift som ska lämnas in på söndag, men det är tisdag och du har inte lämnat in den. Du kan kalla det två försenade dagar.

Ta en titt på följande dataset:

Här har vi ett dataset med några studenter och deras inlämningsdatum för inlämning av uppgifter. Du kan se det senaste inlämningsdatumet. Vårt mål är att hitta datumet för försening baserat på inlämningsdatumet. För att åstadkomma detta följer du de här stegen:

📌 Steg

  • Tryck först på Alt+F11 på tangentbordet för att öppna VBA-redigeraren.
  • Välj sedan Infoga> Modul .

  • Därefter skriver du följande kod:
 Sub overdue_days() Dim cell As Integer Dim J As Integer Dim due_date As Date due_date = #1/11/2022# For cell = 5 To 11 If Cells(cell, 4).Value = due_date Then Cells(cell, 5).Value = "Submitted Today" ElseIf Cells(cell, 4).Value> due_date Then J = due_date - Cells(cell, 4).Value J = Abs(J) Cells(cell, 5).Value = J & " Overdue Days" Else Cells(cell, 5).Value = "No Overdue" End If Next cellSlutar under 

Vi använde oss av ABS-funktionen för att ta bort minustecknet.

  • Spara sedan filen.
  • Därefter trycker du på Alt+F8 på tangentbordet för att öppna dialogrutan Makro.
  • Välj sedan
  • Klicka sedan på Kör .

Som du kan se har vi lyckats använda datumet i VBA och hittat de försenade dagarna.

Liknande läsningar

  • Hur du använder VBA Space-funktionen i Excel (3 exempel)
  • Använd VBA ChDir-funktionen i Excel (4 lämpliga exempel)
  • Hur man använder IsNull-funktionen i Excel VBA (5 exempel)
  • Använd VBA While Wend Statement i Excel (4 exempel)
  • Hur man anropar en Sub i VBA i Excel (4 exempel)

2. Hitta födelseår från datum med hjälp av VBA

Nu kan du hitta året från ett visst datum, vilket är ganska enkelt.

Ta en titt på följande dataset:

Här kan du se födelsedatumet för vissa personer. Vårt mål är att få fram födelseåret från datumet och även födelseåret för den sista posten Elizabeth.

📌 Steg

  • Tryck först på Alt+F11 på tangentbordet för att öppna VBA-redigeraren.
  • Välj sedan Infoga>Modul .

  • Därefter skriver du följande kod:
 Sub find_year() Dim last_entry As Date Dim cell As Integer For cell = 5 To 11 Cells(cell, 4).Value = Year(Cells(cell, 3).Value) If cell = 11 Then last_entry = Cells(cell, 3).Value End If Next cell MsgBox "Födelseår för sista posten: " & Year(last_entry) End Sub 
  • Spara sedan filen.
  • Därefter trycker du på Alt+F8 på tangentbordet för att öppna dialogrutan Makro.
  • Välj sedan find_year .
  • Klicka sedan på Kör .

Slutligen kan du se att vi har lyckats extrahera födelseåret från varje datum. Vi hittade också födelseåret för den sista posten med hjälp av datumet i VBA i Excel.

3. Lägg till dagar i datum med VBA

Nu kan du definiera datumvariabeln och använda den för att lägga till datumet. För att göra detta använder vi DateAdd Du kan använda den här funktionen för att lägga till dagar, månader och år till ett visst datum.

Ta en titt på följande dataset:

Här kan du se några namn och datum som är kopplade till dem. Vårt mål är att lägga till ytterligare fem dagar till de givna datumen och skapa ett nytt datum.

📌 Steg

  • Tryck först på Alt+F11 på tangentbordet för att öppna VBA-redigeraren.
  • Välj sedan Infoga>Modul .

  • Därefter skriver du följande kod:
 Sub add_days() Dim first_date As Date Dim second_date As Date Dim cell As Integer For cell = 5 To 11 first_date = Cells(cell, 3).Value second_date = DateAdd("d", 5, first_date) Cells(cell, 4).Value = second_date Next cell End Sub 

Här har vi använt "d" som argument i funktionen DateAdd. Du kan ändra det till "y" eller "m" för att lägga till år respektive månader,

  • Spara sedan filen.
  • Därefter trycker du på Alt+F8 på tangentbordet för att öppna dialogrutan Makro.
  • Därefter väljer du.
  • Klicka sedan på Kör .

Som du kan se har vi lyckats lägga till dagar i ett datum med hjälp av datumet i VBA. Nu kan du ändra koden enligt dina önskemål.

💬 Saker att komma ihåg

VBA Date-funktionen fungerar faktiskt så här TODAY-funktionen i Excel.

VBA DATE är en icke-flyktig funktion i Excel, vilket innebär att den behåller data även om strömmen bryts.

I princip sparar VBA datumvärden som DATE vid tidpunkten för implementeringen.

Om du försöker tilldela en datumvariabel som en sträng/text kommer det att orsaka ett fel.

Standardvärdet för Date är 0:00:00 (midnatt) den 1 januari 0001.

Slutsats

Avslutningsvis hoppas jag att den här handledningen har gett dig användbar kunskap om datum i VBA-koder. Vi rekommenderar att du lär dig och tillämpar alla dessa instruktioner på ditt dataset. Ladda ner övningsarbetsboken och prova dem själv. Du får också gärna ge feedback i kommentarsfältet. Din värdefulla feedback håller oss motiverade att skapa handledningar som denna.

Glöm inte att besöka vår webbplats Exceldemy.com för olika Excel-relaterade problem och lösningar.

Fortsätt att lära dig nya metoder och fortsätt att växa!

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.