Avatar billede mercu Nybegynder
10. december 2008 - 22:12 Der er 18 kommentarer og
1 løsning

Sætte default date og "fremskrive dato"? VBA

Jeg er ved at lave en lille procedure.

Men mangler lidt hjælp.

hvordan sætter man den default dato? Jeg har en inputbox, hvor man kan indtaste en dato. Men jeg vil gerne have at, hvis man ikke tster nogen dato så tager dags dato som "default".

Derud over vil jeg gerne vide hvordan man kan fremskrive datoen?
Fx hvis man indtaster en dato også vil vide hvad datoen er 12,5år senere?
Avatar billede kabbak Professor
10. december 2008 - 22:33 #1
kan dette bruges, her er dags dato standard

Public Sub test()
Dim dato As Variant
dato = InputBox("Indtast Dato", "Dato", Date)
If dato = "" Then dato = Date
End Sub
Avatar billede kabbak Professor
10. december 2008 - 22:37 #2
Fremskreven dato

Dim Dato As Date, Dato2 As Date
Dato = #1/12/2008#
Dato2 = Dato + DateSerial(12, 6, 0)
Avatar billede mercu Nybegynder
10. december 2008 - 22:43 #3
Hmm det virker ikke helt min kode ser sådan ud


Public Sub opgave1()
Dim vielsesdato As Date
Dim ugedag As String
Dim kobberbryllupdag As Date

vielsesdato = InputBox("indtast vielsesdato", "vielsesdato", Date)
If vielsesdato = "" Then dato = Date

Kobberbryllupsdag = vielsesdato + DateSerial(12, 6, 0)

ugedag = Weekday(Kobberbryllupsdag)

MsgBox ("Din kobberbryllups dag er " & ugedag & Kobberbryllupsdag)
Avatar billede mercu Nybegynder
10. december 2008 - 22:45 #4
Fandt lige en fejl selv.. så den er sdåan, men virker stadig ikke helt

Public Sub kobberbryllup()
Dim vielsesdato As Date
Dim ugedag As String
Dim kobberbryllupdag As Date

vielsesdato = InputBox("indtast vielsesdato")
If vielsesdato = "" Then vielsesdato = Date

Kobberbryllupsdag = vielsesdato + DateSerial(12, 6, 0)

ugedag = Weekday(Kobberbryllupsdag)

MsgBox ("Din kobberbryllups dag er " & ugedag & Kobberbryllupsdag)

End Sub
Avatar billede kabbak Professor
11. december 2008 - 08:13 #5
hvad virker ikke helt
Avatar billede mercu Nybegynder
11. december 2008 - 09:56 #6
Hvis jeg vil køre min den.. så kommer min inputbox og siger indtast dato, det er fint. Så trykker man "enter" også kommer den "run time error"
Avatar billede mercu Nybegynder
11. december 2008 - 09:58 #7
Fandt lige nogen flere små fejl, (store bogstaver nogen steder) men det hjalp ikke rigtigt:

Public Sub kobberbryllup()
Dim vielsesdato As Date
Dim ugedag As String
Dim kobberbryllupdag As Date

vielsesdato = InputBox("indtast vielsesdato", "vielsesdato", Date)
If vielsesdato = "" Then vielsesdato = Date

kobberbryllupdag = vielsesdato + DateSerial(12, 6, 0)

ugedag = Weekday(kobberbryllupsdag)

MsgBox ("Din kobberbryllups dag er " & ugedag & kobberbryllupdag)

End Sub
Avatar billede kabbak Professor
11. december 2008 - 11:13 #8
kobberbryllupsdag har du både med og uden s


Public Sub kobberbryllup()
Dim vielsesdato As Date
Dim ugedag As String
Dim kobberbryllupdag As Date
On Error Resume Next
vielsesdato = InputBox("indtast vielsesdato", "vielsesdato", Date)
If vielsesdato = #12:00:00 AM# Then vielsesdato = Date

kobberbryllupdag = vielsesdato + DateSerial(12, 6, 0)

ugedag = Weekday(kobberbryllupdag)

MsgBox ("Din kobberbryllups dag er " & Format(kobberbryllupdag, "DDDD") & "-" & kobberbryllupdag)

End Sub
Avatar billede jonasboege Praktikant
11. december 2008 - 11:37 #9
Den virker ikke - jeg blev gift 16-10-1999... så jeg burde have kobberbryllup 16-04-2012 - men den siger torsdag 17-03-2012, hvilket er en lørdag..
Avatar billede kabbak Professor
11. december 2008 - 11:52 #10
ret
kobberbryllupdag = vielsesdato + DateSerial(12, 6, 0)
til
kobberbryllupdag = vielsesdato + DateSerial(12, 7, 0)
spørg ikke hvorfor, men så passer det
Avatar billede kabbak Professor
11. december 2008 - 12:07 #11
Sorry, her der den rigtige


Public Sub kobberbryllup()
Dim vielsesdato As Date
Dim kobberbryllupdag As Date
On Error Resume Next
vielsesdato = InputBox("indtast vielsesdato", "vielsesdato", Date)
If vielsesdato = #12:00:00 AM# Then vielsesdato = Date

kobberbryllupdag = DateAdd("yyyy", 12, vielsesdato)
kobberbryllupdag = DateAdd("M", 6, kobberbryllupdag)
MsgBox ("Din kobberbryllups dag er " & Format(kobberbryllupdag, "DDDD") & " " & kobberbryllupdag)

End Sub
Avatar billede jonasboege Praktikant
11. december 2008 - 12:12 #12
Og her kom jeg 5 min for sent...

Public Sub kobberbryllup()
Dim vielsesdato As Date
Dim ugedag As String
Dim kobberbryllupsdag As Date
On Error Resume Next
vielsesdato = InputBox("indtast vielsesdato", "vielsesdato", Date)

kobberbryllupsdag = DateAdd("m", 6, vielsesdato)
kobberbryllupsdag = DateAdd("yyyy", 12, kobberbryllupsdag)

ugedag = Weekday(kobberbryllupsdag)
MsgBox ("Din kobberbryllupsdag er " & Format(kobberbryllupsdag, "DDDD") & " d. " & kobberbryllupsdag)

End Sub
Avatar billede mercu Nybegynder
11. december 2008 - 12:16 #13
Mange tak..

Men har lige et spørgsmål den der

"on error resume next"

hvad gør den?
Avatar billede mercu Nybegynder
11. december 2008 - 12:19 #14
Lige en ting mere.

Hvorfor følgende:

kobberbryllupsdag = DateAdd("m", 6, vielsesdato)
kobberbryllupsdag = DateAdd("yyyy", 12, kobberbryllupsdag)

Jeg kan godt se at der lægges 6 måneder til vielsesdato og formatet er "m". Men i nr 2 lægges der 12 måneder til også "kobberbryllupsdag" hvorfor det? Burde det ikke være vielsesdagen?
Avatar billede mercu Nybegynder
11. december 2008 - 12:20 #15
d
Avatar billede jonasboege Praktikant
11. december 2008 - 13:28 #16
Først tages vielsesdato + 6 måneder og kaldes nu kobberbryllupsdag
Så tages kobberbryllupsdag og tillægges 12 år ("yyyy" = år, "m" = måneder)
På den måde bliver kobberbryllupsdag = vielsesdag + 12,5 år.

Så desværre - der må kæmpes for det for at opnå kobberbryllup - 1½ år er desværre ikke nok!

Se mere om DateAdd funktionen her:
http://www.devguru.com/Technologies/vbscript/quickref/dateadd.html
Avatar billede kabbak Professor
11. december 2008 - 13:32 #17
Her lægges 6 måneder til vielsesdatoen og det gemmes så i kobberbryllupsdag
kobberbryllupsdag = DateAdd("m", 6, vielsesdato),
læg mærke til "m", det betyder måneder

Her lægges 12 år til kobberbryllupsdag og det gemmes så igen i kobberbryllupsdag
kobberbryllupsdag = DateAdd("yyyy", 12, kobberbryllupsdag),
læg mærke til "yyyy", det betyder år

On Error Resume Next,
bruges, når man forventer en fejl i programmet, det får du når du trykker annuller til inputboksen, så går koden bare videre til næste linje
Avatar billede mercu Nybegynder
11. december 2008 - 14:24 #18
Men det betyder altså så også at jeg kan undlade den der Error Resume Next, men så kan man ikke trykke cancel?
Avatar billede kabbak Professor
11. december 2008 - 15:10 #19
hvis du trykke cancel eller luk på X, det er det samme, koden vil så gå i fejl, hvis du fjerner Error Resume Next,
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
Kurser inden for grundlæggende programmering

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