2016-06-21 53 views
0

我的問題是一旦從我的UserForm內的下拉列表(組合框)中選擇一個國家,我的文本框沒有顯示任何輸出。什麼都沒發生。文本框應該在ComboBox中選擇任何值時執行VLookUp。組合框(名稱)是「國家」。VLookUp組合框輸入來更新TextBox值

代碼文本框之一:

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

可能需要做一些調試,像什麼是國家的價值?嘗試Debug.Print(Application.WorksheetFunction.VLookup(Country.Value,myRange,2,False))。另外爲什麼當你只想要列2時定義一個範圍的A:R?最後,在不使用.WorksheetFunction的情況下嘗試Application.Vlookup,它會產生可能有所幫助的不同類別的錯誤消息。 – Absinthe

+0

所以我試着做調試,沒有發生任何事情。我還創建了一個按鈕來顯示「Country.value」的消息框,但是當我點擊它時沒有發生任何事情。如果我選擇一個國家並在ComboBox中敲擊鍵盤上的Enter鍵,則會出現自動化錯誤,如果它有所作爲,則調用的對象已與其客戶端 – Davey

+0

Idk斷開連接,但這發生在帶有選項卡的UserForm內。這是UserForm中的第二個選項卡 – Davey

回答

2

必須使用Country_Change()事件處理程序,而不是TextBox2_Change()一個

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,有點明顯>。<0123這個 – Absinthe

+0

這個工作完美!我剛剛在網上看到很多地方做我嘗試過的方法,但是這樣做效率更高,它實際上工作ha – Davey

+0

很高興它工作。乾杯 – user3598756