2016-06-21 13 views
0

Mein Problem einmal ein Land aus einer Dropdown-Liste (ComboBox) In meiner Userform entschieden hat, meine Textfelder zeigen keine Ausgabe. Nichts passiert. Die Textfelder sollen einen VLookUp auf jeden Wert ausführen, der in der ComboBox ausgewählt ist. Die ComboBox (Name) ist "Land".vlookup ComboBox Eingang TextBox zu aktualisieren Werte

-Code für eines der Textfelder:

Private Sub TextBox2_Change() 
Dim myRange As Range 
Set myRange = Worksheets("All Countries Validation").Range("A:R") 
TextBox2.Value = Application.WorksheetFunction.VLookup(Country.Value, myRange, 2, False) 
+0

Wahrscheinlich müssen einige Debug tun, wie, was ist der Wert von Land verwenden müssen? Versuchen Sie Debug.Print (Application.WorksheetFunction.VLookup (Country.Value, myRange, 2, False)). Warum definieren Sie auch einen Bereich von A: R, wenn Sie nur Spalte 2 möchten? Versuchen Sie schließlich Application.Vlookup ohne die .WorksheetFunction, es gibt eine andere Klasse von Fehlermeldungen, die dazu beitragen können. – Absinthe

+0

Also habe ich versucht, das Debugging und nichts passierte. Ich habe auch eine Schaltfläche erstellt, um ein Meldungsfeld von "Country.value" anzuzeigen, aber nichts passierte, als ich darauf klickte. Wenn ich ein Land und drücken Sie die Enter-Taste auf der Tastatur wählen, während in dem ComboBox ich einen Automatisierungsfehler erhalten, aufgerufen Das Objekt wird von den Clients getrennt – Davey

+0

Idk wenn es einen Unterschied macht, aber dies ist in einem Benutzerformular mit Registerkarten statt. Dies ist die zweite Registerkarte in der UserForm – Davey

Antwort

2

Sie Country_Change() Ereignishandler statt TextBox2_Change() ein

Option Explicit 

Private Sub Country_Change() 
    Dim myRange As Range, f As Range 

    Set myRange = Worksheets("All Countries Validation").Range("A:A") 

    Set f = myRange.Find(What:=Country.Value, LookIn:=xlValues, Lookat:=xlWhole, MatchCase:=False) '<--| try and find combobox selected value 
    If f Is Nothing Then '<--| if not found ... 
     TextBox2.Value = "" '<--| ... then clear textbox 
    Else'<--| ... otherwise... 
     TextBox2.Value = f.Offset(, 1) '<--| ... fill it with proper value 
    End If 
End Sub 
+1

Doh sehen, wenig offensichtlich>. <+1 für diesen – Absinthe

+0

Diese funktionierte perfekt! Ich sah gerade viele Orte online tun es die Methode, die ich versuchte, aber das war viel effizienter und es funktionierte tatsächlich ha – Davey

+0

froh, dass es funktioniert hat. Prost – user3598756