Avatar billede ups34 Nybegynder
19. juli 2008 - 14:04 Der er 12 kommentarer og
1 løsning

Lopslag fungere ikke i VBA kode i UserForm.Activate

Hej
Jeg kan ikke få et Lopslag til at fungere i et større regneark. Jeg ønsker at hvis, knappen for "Eksisterende kunde" er aktiveret (True) skal Lopslaget finde alle oplysninger som navn og adresse ud fra "Kundenummer"
Koden jeg har prøvet med se således ud:
Private Sub txtNavn_Change()
If lstKundeNummer.Value > 1 Then
txtNavn.FormulaR1C1 = _
        "=VLOOKUP(R[-1]C[-4],Kundeliste!R[-19]C[-4]:R[-17]C[5],2,FALSE)"

End If
End Sub

Når jeg laver Lopslaget på et almindeligt ark fungere den uden problemer.
Håber nogen har tid/lyst til at hjælpe
Avatar billede jkrons Professor
19. juli 2008 - 14:29 #1
Jeg er ikke helt klar over, hvor du vil have formlen sat ind. Er txtNavn navnet på en celle, eller er det navnet på etr felt ui Userformen? Hvis det sidste er tilfældet, så prøv med

Prøv med

txtNavn = Application.WorksheetFunction.VLOOKUP(R[-1]C[-4],Kundeliste!R[-19]C[-4]:R[-17]C[5],2,FALSE)
Avatar billede ups34 Nybegynder
19. juli 2008 - 23:29 #2
Hej jkrons

Jeg får følgende fejlmelding
Compile error:
Expected: list seperator or )

txtNavn = Application.WorksheetFunction.VLOOKUP(R[-1]C[-4],Kundeliste!R[-19]C[-4]:R[-17]C[5],2,FALSE)

VBA markere (R[-1]

Det er navnet på et felt i UserForm (txtNavn) og der skal kun hentes oplysninger ind, når det er en eksisterende kunde. UserForm starter med et spørgsmål om, der er tale om en eksisterende kunde? Ja eller nej. Trykkes på nej skal oplysninger skrives ind manuelt, trykkes ja, skal felte txtNavn automatisk hente oplysninger via et Lopslag.
Det felt hvor den skal skal læse oplysningen om det eksisterende kundenummer hedder "lstEksisterendeKunde", her er markeret kundenummer. Håber dette kan hjælpe
MVH
Ups
Avatar billede jkrons Professor
20. juli 2008 - 12:18 #3
Prøv at "oversætte" til almindelige referencer i stedet´for R1C1 referencerne.
Avatar billede ups34 Nybegynder
21. juli 2008 - 10:40 #4
With Navn
If lstKundeNummer.Value > 1 Then
txtNavn = Application.WorksheetFunction.VLookup(lstKundeNummer.Text, Kundeliste![A1;J3], 2, False)

End If
End With
Når jeg skriver koden således, får jeg ingen fejlmelding, men det virker stadig ikke
Avatar billede excelent Ekspert
21. juli 2008 - 11:18 #5
prøv :

txtNavn = Evaluate("VLookup(" & Me.lstKundeNummer.Text & ",Kundeliste!A1;J3,2,False)")
Avatar billede jkrons Professor
21. juli 2008 - 11:48 #6
Prøv med

Kundeliste!A1:J3 i stedet for Kundeliste![A1;J3]
Avatar billede ups34 Nybegynder
21. juli 2008 - 14:41 #7
Hej
Jeg har nu prøvet excelent forslag, det ser ud som nedenstående. Jeg kan ikke få VBA til at acceptere uden [ ] i den anden kode (kommentar 10:40:44)

Desværre sker der ingen ting andet end feltet "txtNavn" nu er aktivt når jeg starter programmet.
Som tidligere beskrevet er der to muligheder når brugeren åbner UserForm. Der kan svares ja/nej til om det er en eksisterende kunde. Svares der ja, markeres chkEksisterendeKunde, og det er muligt at hente kundenummer ind fra en liste (lstKundeNummer), svares der nej, markeres chkNyKunde og alle felter vedr. navn og adresse bliver tilgængelige. Jeg har sikret mig at felte Navn er sat til .Enabled = True i begge scenarier, aligevel virker det ikke.
Jeg kan bare ikke gennemskue hvad jeg gør forkert.


Private Sub UserForm_Activate()

With Navn
If lstKundeNummer.Value > 1 Then
txtNavn = Evaluate("VLookup(" & Me.lstKundeNummer.Text & ",Kundeliste!A1;J3,2,False)")
End If
End With

Private Sub txtNavn_Change()
If lstKundeNummer.Value > 1 Then
txtNavn = Evaluate("VLookup(" & Me.lstKundeNummer.Text & ",Kundeliste!A1;J3,2,False)")
End If
End Sub
Avatar billede excelent Ekspert
21. juli 2008 - 15:26 #8
kan du ikke sende en kopi af filen
pm@madsen.tdcadsl.dk
Avatar billede ups34 Nybegynder
21. juli 2008 - 19:04 #9
Der er en megefil påvej ;-)
Avatar billede excelent Ekspert
21. juli 2008 - 19:47 #10
ok fil retur
Avatar billede excelent Ekspert
21. juli 2008 - 20:38 #11
løsning :

Private Sub lstKundeNummer_Change()
If lstKundeNummer.Value > 1 Then
On Error Resume Next
txtNavn.Text = Evaluate("VLookup(" & Me.lstKundeNummer.Text & ",Kundeliste!A1:J3,2,False)")
End If
End Sub
Avatar billede ups34 Nybegynder
21. juli 2008 - 21:25 #12
Hej Excelent
Tusind tak for hjælpen, det fungere fint i alle celler
MVH
Ups
Avatar billede excelent Ekspert
21. juli 2008 - 21:27 #13
velbekom
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