2016-06-21 7 views
0

私の問題は、ユーザーフォーム内のドロップダウンリスト(ComboBox)から一度国を選択すると、テキストボックスに出力が表示されません。何も起こりません。テキストボックスは、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

国の値が何であるかのように、おそらく、いくつかのデバッグを行う必要がありTextBox2_Change()Country_Change()イベントハンドラを使用する必要がありますか? Debug.Print(Application.WorksheetFunction.VLookup(Country.Value、myRange、2、False))を試してください。また、列2を必要とするときにA:Rの範囲を定義するのはなぜですか?最後に、.WorksheetFunctionなしでApplication.Vlookupを試すと、エラーメッセージの別のクラスが生成されます。 – Absinthe

+0

だから私はデバッグをやってみたが、何も起こっていない。また、 "Country.value"のメッセージボックスを表示するボタンを作成しましたが、それをクリックしても何も起こりませんでした。コンボボックス内で国を選択してキーボードのEnterキーを押すと、オートメーションエラーが発生します。呼び出されたオブジェクトはクライアントとの接続が切断されています – Davey

+0

Idkは違いがありますが、タブ付きのUserForm内で発生しています。これはUserForm内の2番目のタブです – Davey

答えて

2

があなたの代わりに1

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、bit obvious>。<+1 for this – Absinthe

+0

これは完全に機能しました!私はちょうど私が試した方法をオンラインで多くの場所を見たが、これははるかに効率的であった、実際には働いていた – Davey

+0

うまく働いた。乾杯 – user3598756

関連する問題