Avatar billede laje3 Nybegynder
17. oktober 2002 - 18:35 Der er 13 kommentarer og
1 løsning

Vlookup variabel i userform returnerer værdi i tekstfelt

Jeg har oprettet en userform i VBA (Excel). På userformen er der en række combo-boxe.

Jeg vil meget gerne lave et Vlookup, men under betingelse af at lstCategory = "Interface"

If lstCategory = "Interface" Then

Så skal der ske en Vlookup på ark1 I range a4:b400.

Lookup værdien der spørges på er ”lstName1” og den returnerede værdi skal placeres i formularens textbox1.

Jeg har prøvet med:

Textbox1.value =  "=VLOOKUP(lstName1,Ark1!RC[-1]:R[400]C,2,0)"

Men det er helt galt. Kan nogen hjælpe?

Mvh

LAJE
Avatar billede Slettet bruger
17. oktober 2002 - 20:05 #1
Hvad får du af fejl ?
Avatar billede laje3 Nybegynder
17. oktober 2002 - 20:48 #2
Når jeg sætter den ind sådan, så skriver den bare =VLOOKUP(lstName1,Ark1!RC[-1]:R[400]C,2,0) i text-boxen. Men måske er det noget med at skrive
Textbox1.value = WorksheetFunction.VLookup(........ men hvordon formulerer jeg look-up i VBA, hvor jeg normalt ville have skrevet =LOPSLAG(A1;Ark1!A1:B12;2;0)(Lopslag fordi det er Excel-DK).
17. oktober 2002 - 21:26 #3
Textbox1.Value = Application.WorksheetFunction.VLookup(lstName1,Ark1!RC[-1]:R[400]C,2,0)
Avatar billede laje3 Nybegynder
17. oktober 2002 - 21:52 #4
Den giver Syntax error på denne: Application.WorksheetFunction.VLookup(lstProduct,Ark1!RC[-1]:R[400]C,2,0) hvad gør jeg forkert?
Jeg har et felt der hedder "lstProduct" og der er også et Ark1??
17. oktober 2002 - 21:57 #5
Du er velkommen til at sende regnearket til mig, så skal jeg kigge på det - gerne nu fd@win-consult.com
Avatar billede laje3 Nybegynder
17. oktober 2002 - 22:05 #6
Det er det nok lidt for stort til + sådan "lidt følsomt data". ok ;-)

Når jeg debugger, kommer der en tekstboks og siger Syntax error. Hvad gør jeg galt, hvis nu jeg er sikker på at navne er rigtige?

lstProduct er en combo-box, som brugeren kan vælge nogle forskellige værdier i. Når der er valgt en værdi, skal der være et tekstfelt på userformen ved siden af som angiver værdien fra et lopslag i et af de sheets der er i min workbook.

Har hævet point og hæver gerne til mere for at få det på plads.
17. oktober 2002 - 22:10 #7
Ændre Ark1!RC[-1]:R[400]C til det specifikke område.
Textbox1.Value = Application.WorksheetFunction.VLookup(lstProduct.Text,Worksheets("Ark1").Range("A1:B400"),2,0)

Hvis lstProduct.Text er et tal så skriv f.eks. CDbl(lstProduct.Text)

Hvad siger du til det ?
Avatar billede laje3 Nybegynder
17. oktober 2002 - 22:21 #8
Det virker simpelt hen ikke:

= Application.WorksheetFunction.VLookup(CDbl(lstProduct.Text), Worksheets("Ark1").Range("A1:B400"), 2, 0).

Skriver nu: Kan ikke angive egenskaben Vlookup for klassen WorkSheetFunction.

Vist rimeligt at jeg hæver til 100. Troede egentlig at det var et læt sp. til at starte med  ;-)
17. oktober 2002 - 22:33 #9
= CStr(Application.WorksheetFunction.VLookup(CDbl(lstProduct.Text), Worksheets("Ark1").Range("A1:B400"), 2, 0))

ellers kan det være håndteringen af CDbl(lstProduct.Text)
17. oktober 2002 - 22:34 #10
Med en lille test tabel kan jeg godt få denne her til at virke
Sub test()
    MsgBox Application.WorksheetFunction.VLookup(1, Worksheets("Ark1").Range("A1:B5"), 2, 0)
End Sub
Avatar billede Slettet bruger
17. oktober 2002 - 23:04 #11
Kan du vise hvad du har af kode indtil videre ?
Avatar billede bak Forsker
18. oktober 2002 - 01:08 #12
Laje3-> det punktum du har i slutningen af sætning, kan være det det giver dig fejlmeddelelsen.
Avatar billede laje3 Nybegynder
18. oktober 2002 - 18:29 #13
Det her virker perfekt;

= CStr(Application.WorksheetFunction.VLookup(CDbl(lstProduct), Worksheets("Ark1").Range("A1:B400"), 2, 0))

En af årsagene til at det ikke virkede med det samme var at "Ark 1" var test-ark, d.v.s. alle de værdier der var repræsenteret i lstProduct ikke var det i ark 1. Det gav en fejl! Den skrev ikke noget om manglende værdi el. lign. Men bare "nedbrud". Beklager at jeg ikke lige gennemskuede det med det samme!

Flemmingdahl -> vil du ikke lige forklare hvad dette betyder i VBA'en?
CStr(A
up(CDbl(lst

Tak for hjælpen og tålmodigheden, alle!

Hurra for eksperterne  ;-)

Mvh

Laje
18. oktober 2002 - 18:44 #14
CStr og CDbl konverterer data - CStr konverterer etellerandet til en string - CDbl til en doubel - Stil dig på CStr og tryk F1 for yderligere hjælp
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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