Avatar billede Mogens Juniormester
07. juni 2022 - 19:10 Der er 9 kommentarer og
3 løsninger

Vlookup vba - virker ikke.

Jeg har snart prøvet meget, men kan ikke få det til at virke - nok fordi jeg ikke helt forstår VLookup?

Jeg vil finde værdien (test_value) i  kolonne 3, i området (A5:A30), hvor datoen = i dag (Date) - og der skal søges efter værdien i alle worksheets (7 stk.)

Håber spørgsmålet er forstået?
Flg.: er prøvet og virker ikke:

Dim test_value
test_value = Application.WorksheetFunction.VLookup(Date, Worksheets.Range("A5:A30"), 3, False)
msgbox test_value
Avatar billede store-morten Ekspert
07. juni 2022 - 20:03 #1
Prøv denne:

test_value = Application.WorksheetFunction.VLookup(CLng(CDate(Date)), Sheets("Ark1").Range("A5:C30"), 3, False)

Kan kun søge på en fane, her: Ark1
Avatar billede store-morten Ekspert
07. juni 2022 - 20:52 #2
Sub test()

On Error GoTo MyErrorHandler:

Ark = 1 'Starter på det første ark fra venstre

' Søger i A5 til A30 og returnere fra C, når dato er fundet stoppes søgning.
test_value = Application.WorksheetFunction.VLookup(CLng(CDate(Date)), Sheets(Ark).Range("A5:C30"), 3, False)
MsgBox test_value & " på " & Sheets(Ark).Name

' Hvis dato ikke findes
MyErrorHandler:
If Err.Number = 1004 Then
Ark = Ark + 1 ' Ark øges med 1

    ' Når alle 7 er gennemsøgt stoppes
    If Ark > 7 Then
    MsgBox "Fandt ikke dags dato!"
    Exit Sub
    End If

Resume ' Gentager søgning
End If

End Sub
Avatar billede Mogens Juniormester
07. juni 2022 - 20:52 #3
Hej store-morten.

Det virker desværre heller ikke.
Jeg får fejlmeddelelsen: "subscript out of range"

Har det mon noget at gøre med min Excel? Det er en Office 2016 version.
Avatar billede Mogens Juniormester
07. juni 2022 - 20:59 #4
Jeps, det virker :)

Mange tak for hjælpen.

Vh
Mogens
Avatar billede store-morten Ekspert
07. juni 2022 - 21:03 #5
Manglede der: Dim af test_value og Ark?
Avatar billede Mogens Juniormester
07. juni 2022 - 21:10 #6
Ja, det var Dim af Ark, der manglede......

Det er åbenlyst for mig nu, men jeg havde stirret mig blind på noget andet :)

Er ikke erfaren i vba Excel - mere i vba Access :)
Avatar billede store-morten Ekspert
07. juni 2022 - 21:18 #7
Super 👍
Avatar billede Mogens Juniormester
14. juni 2022 - 20:16 #8
Hej store-morten.....  Er du her endnu? :)

Hvis, så har jeg et lille problem oveni den løsning du kom med.

Jeg kan kun returnere værdier fra B og C... (2) og (3).
Vil gerne også kunne returnere fra D, E, F osv., men får kun Null, hvorfor mon?
Avatar billede store-morten Ekspert
14. juni 2022 - 20:50 #9
Har du udvidet dit område?

Sheets(Ark).Range("A5:F30"), 6, False)
Avatar billede Mogens Juniormester
14. juni 2022 - 22:41 #10
Ja, det har jeg, men det var et andet problem :)

Nu bøvler jeg så med, at returnere teksten "Ferie" fra kolonne 8.
test = Application.WorksheetFunction.VLookup(Ferie, Sheets(Ark).Range("A5:I39"), 8, False) ...... Det virker ikke.
Teksten "Ferie" står forskellige steder i kolonne 8 i forskellige ark, og jeg vil gerne lave en sum af fundne "Ferie" (Count).
Avatar billede store-morten Ekspert
14. juni 2022 - 23:16 #11
Den vil altid slå "ferie" op i den først kolonne i dit Range, altså i A
Avatar billede Mogens Juniormester
15. juni 2022 - 21:36 #12
Selvfølgelig - der var fejlen.
Mange tak :)
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