Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 12:47 Der er 10 kommentarer og
1 løsning

Undersøg i VBA om datoen er valid

Hej

Jeg har lavet en ark, hvor man smider en dato ind, og den beregner derefter noget ud fra de tilhørende værdier.

Jeg vil gerne have VBA til at vælge den næste dato hver gang jeg kører makroen.
Indtil videre har jeg fået den til at tillæge 1, hver gang den kører, men så opstår der nogle datoer, som ikke findes i tabellen (weekender osv.)
Jeg vil derfor gerne have, at den springer datoer over, som ikke er i tabellen.
Hvordan kan dette løses?

Indtil videre har jeg lavet dette.

Sub Plus1()

Dim i As Variant
i = Range("c7") + 1
Range("c7") = i
Do Until lookup(Range("c7"), Range("Dato"))
Loop

Denne virker dog ikke.

Jeg vil meget gerne udbyde, hvis det er nødvendigt.

På forhånd tak!
Avatar billede madiedk Nybegynder
19. marts 2010 - 12:56 #1
hvad for en tabel? er det en kolonne i et excalark du snakker om?
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 13:01 #2
Ja, det er en række i et Excel ark, hvor den skal tage den næste i rækken.
Avatar billede madiedk Nybegynder
19. marts 2010 - 13:16 #3
så brug cells(i,1) istedet for range("xx") og øg i med 1 i hver iteration.
Avatar billede kabbak Professor
19. marts 2010 - 13:22 #4
jeg ved ikke om det hjælper, men min excel vil ikke kendes ved lookup.

Sub Plus1()
Do Until Range("c7") = Range("Dato")
Range("c7").Value = Range("c7").Value + 1
Loop
End Sub
Avatar billede madiedk Nybegynder
19. marts 2010 - 13:27 #5
Det er vel også ligemeget hvis du bare skal øge med 1 hver gang,så læser cells(i,1) bare den næste i rækken. Ellers så skriv din egen lookup med en løkke (tager 5 min) hvis du VIL bruge en form for lookup
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 13:32 #6
Svar #3
Jeg er ikke helt med på, hvad du mener. Jeg er meget grøn på VBA området.

Svar #4
Nej, det vil min heller ikke - Det var meget for at indikerer, hvad jeg mente.

Den kode du skriver, vil ikke virke hos mig. Den debugger ved:
Do Until Range("c7") = Range("Dato")
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 13:34 #7
#5 Det skal ikke nødvendigvis være lookup. Det skal bare fungere på den bedst mulige måde.
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 13:42 #8
Det skal sige, at "dato" er en række med datoer.
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 14:39 #9
Jeg fik løst det ved at lave en hvis formel i en celle ("D7")

Do Until Range("D9") = 1
Range("c7").Value = Range("c7").Value + 1
Loop

Nu kommer jeg dog til et nyt problem.
Loop'ene skal stoppe, når den når til sidste dato.
Det har jeg forsøgt at løse med:

Do Until Range("C7") = Range("E9")
Range("c7").Value = Range("c7").Value + 1
Loop

Så det samlet ser således ud:

Sub Plus1()

Do Until Range("D9") = 1
Range("c7").Value = Range("c7").Value + 1
Loop
Do Until Range("C7") = Range("E9")
Range("c7").Value = Range("c7").Value + 1
Loop

End Sub

Problemet er så bare, at nu bliver den ved til sidste dato uden at stoppe.
Avatar billede Tryllefeen Nybegynder
19. marts 2010 - 15:36 #10
Smid et svar kabbak, så får du point
Avatar billede kabbak Professor
19. marts 2010 - 16:11 #11
;-))
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