Avatar billede ABE15 Seniormester
23. december 2018 - 15:15 Der er 6 kommentarer og
1 løsning

Dags dato via VBA

Hej
Jeg har lavet et budget i Excel, hvor jeg har alle årets dage i et ark. I dette ark er det muligt at indtaste de forventede ind og udgifter. Da arket indeholder alle dage i et år, er det langt og det kunne derfor være fedt hvis man i toppen af arket kunne navigerer til dags dato via en knap. Men hvordan gør man lige det?
Jeg går udfra at der skal noget kode til, men hvordan kan sådan en kode se ud?
Avatar billede xl-Enthusiast Ekspert
23. december 2018 - 21:15 #1
Avatar billede Jan Hansen Ekspert
23. december 2018 - 22:55 #2
eller noget ala:

Option Explicit
Dim rColumn As Range, rcell As Range

Private Sub Worksheet_Activate()
    Set rColumn = ("A2:A366")
    For Each rcell In rColumn
        If rcell.Value = Now Then Application.Goto rcell, True
    Next
End Sub

i arkets kodemodul

Jan
Avatar billede bak Seniormester
24. december 2018 - 12:39 #3
eller under forudsætning af at dine datoer er i kolonne A

Sub FindToday()
    Range("A:A").Find(What:=Date, After:=Range("A1"), LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).Activate
End Sub
Avatar billede store-morten Ekspert
25. december 2018 - 11:33 #4
Sub Gå_Til_IDag()
    For Each c In Range("A2:A366").Cells
        If c.Value = Date Then
            c.Activate
            Exit Sub
        End If
    Next
End Sub
Avatar billede ABE15 Seniormester
25. december 2018 - 14:47 #5
#4
Kam du forklare hvor der sker i den kode du har skrevet?
Hvad betyder fx. c.value?
Avatar billede store-morten Ekspert
25. december 2018 - 15:15 #6
Koden kikker cellerne A2 til A366 igennem en efter en,
første gang vil c være =A2´s værdi (Value),
næste gang vil c være =A3´s værdi.... osv.

Når c.value så er = dags dato, aktiveres denne celle.

Kan også skrives sådan:

Sub Gå_Til_IDag()
    For Each celle_med_dato In Range("A2:A366").Cells
        If celle_med_dato.Value = Date Then
            celle_med_dato.Activate
            Exit Sub
        End If
    Next
End Sub

Er dog ikke så kønt ;-)
Avatar billede store-morten Ekspert
25. december 2018 - 15:28 #7
Hvis du ikke ønske dato cellen markeret kan lege med: Offset

Sub Gå_Til_IDag()
    For Each c In Range("A2:A366").Cells
        If c.Value = Date Then
            c.Offset(0, 1).Activate
            Exit Sub
        End If
    Next
End Sub

Som vil markerer cellen til højre for cellen med: dags dato. (Kolonne B)
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

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