Avatar billede plasse Nybegynder
01. april 2011 - 15:24 Der er 9 kommentarer og
1 løsning

Indsætte betalingdato; løbende måned + 10 dage

Er det muligt at få word til automatisk at generere en dato som er dags dato med løbende måned + 10 dage?

Pt. har jeg fundet frem til en macro som sætter datoen 10 dage frem, men ikke tager stilling til den løbende måned;
svar = Date + 10
ActiveDocument.Bookmarks("forfald").Range.Text = svar

Nogle der kan hjælpe?
Avatar billede Lene Fredborg Ekspert
01. april 2011 - 16:28 #1
Det er lidt uklart ud fra din beskrivelse og udregningen, hvordan du mener, "løbende måned + 10 dage" skal fortolkes.

Se mere forklaring i VBE-hjælpen om DateSerial.

Hvis du mener, at det skal være den 10. i den efterfølgende måned, kan du bruge:

    Dim strDate As String
    strDate = DateSerial(Year(Date), Month(Date) + 1, 10)

Hvis du mener, at det skal være datoen + 10 dage og tillagt en måned, kan du tage udgangspunkt i:

    Dim strDate As String
    strDate = DateSerial(Year(Date), Month(Date) + 1, Day(Date) + 10)

Men måske du så ønsker det håndteret anderledes, hvis der er mindre end 10 dage tilbage af indeværende måned ...
Avatar billede plasse Nybegynder
01. april 2011 - 17:13 #2
Jeg prøver lige med en bedre forklaring så vi er enige :-)

Datoen der skal indsættes skal tage udgang punkt i datoen som dokumentet bliver oprettet.
Lad os sige denne dato er den 10-04-2011.
Hertil skal der tillægges den resterne/løbende måned og oveni det ligges 10 dage mere.
Så datoen som fremkommer skal blive 10-05-2011.

Så umeldbart vil jeg sige dit forslag nr. 2 er vejen frem?
Avatar billede Lene Fredborg Ekspert
02. april 2011 - 00:17 #3
Nej, det er mit eksempel 1 ;-) - eller ingen af dem:

I dit eksempel har du valgt den 10. som startdato, og i din første post skrev du, at det var 10 dage, der skulle lægges til ud over løbende måned. Ser du, jeg er stadig i tvivl, fordi slutdatoen i dit eksempel også er den 10., hvilket betyder, at der i dit eksempel er lagt præcis en måned til ;-)

Det lyder mest på din forklaring, som om betalingsdatoen altid være den 10. i den efterfølgende måned, og det er, hvad _eksempel 1_ i min første post laver. Prøv at læse hjælpen til DateSerial, så du kan se, hvordan den virker. Første parameter giver året, anden parameter måneden og tredje dagen. I eksempel 1 beholdes året, der lægges 1 til måneden, og dagen sættes til 10 (= 10. dag i måneden). DateSerial holder selv styr på, om året også skal skifte (vil her være tilfældet, hvis måneden er december, fordi næste måned så er januar i det følgende år).

Altså:
Hvis datoen skal være den 10. i den efterfølgende måned (f.eks. 21-04-2011 > 10-05-2011, så brug eksempel 1 fra første post, nemlig:

    Dim strDate As String
    strDate = DateSerial(Year(Date), Month(Date) + 1, 10)

Hvis der i stedet skal tillægges en måned (sådan som dit eksempel også kan læses - f.eks. 21-04-2011 > 21-05-2011), kan du måske bruge:

    Dim strDate As String
    strDate = DateSerial(Year(Date), Month(Date) + 1, Day(Date))

Men måske den sidste variant ikke er præcis nok, som den er her. Der kan ske forskydning af dagen afhængigt af den aktuelle dato. Eksempel: hvis datoen er 31-01-2011, vil slutdatoen blive 03-03-2011, fordi februar i 2011 kun har 28 dage.
Avatar billede plasse Nybegynder
02. april 2011 - 09:53 #4
I princippet er start datoen hvor dokumentet bliver oprettet 100% ligemeget. Ligemeget hvilken dato det er skal der ligges den resteren/løbende måned til + 10 dage..
Avatar billede Lene Fredborg Ekspert
02. april 2011 - 18:23 #5
...og det er præcis, hvad eksempel 1 i begge mine forklaringer gør, dvs.:

    Dim strDate As String
    strDate = DateSerial(Year(Date), Month(Date) + 1, 10)
Avatar billede plasse Nybegynder
02. april 2011 - 20:21 #6
Det er sandt. Tak for hjælpen - point i din retning :-)
Avatar billede plasse Nybegynder
02. april 2011 - 20:28 #7
Har lige et spørgsmål mere faktisk. Så må vi se på point bag efter ;-)
Er det muligt at indsætte en dato som automatisk er den sidste dato i måneden. Lige meget hvilken måned dokumentet bliver oprettet i?
Avatar billede Lene Fredborg Ekspert
02. april 2011 - 21:27 #8
Igen kan du bruge DateSerial:

    Dim MonthEnd As String
    MonthEnd = DateSerial(Year(Date), Month(Date) + 1, 0)

Princippet: Date = dags dato. Læg 1 til måneden. Ved at sætte dagen til 0 får du dagen før første dag i næste måned = sidste dag i den aktuelle måned.
Avatar billede plasse Nybegynder
02. april 2011 - 21:43 #9
Tak!!
Vil du ha' flere point?
Avatar billede Lene Fredborg Ekspert
02. april 2011 - 22:08 #10
Velbekomme. Det er OK uden point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester