• ベストアンサー

エクセル マクロの記述 =VLOOKUP()

エクセル マクロ ユーザーフォームを作成して そのフォ-ムのなかにテキストBoxを2つ 作り、TextBoX1にID番号(Sheet1にA列にID番号、B列に氏名あり)を入力すると、TextBox2に氏名が表示出来るようにしたいです。 そのような記述を教えて下さい。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。こんな感じとか。 Private Sub UserForm_Initialize()   With TextBox1     .SetFocus     .Text = "ここに ID を入力して下さい"     .SelStart = 0     .SelLength = Len(.Text)   End With End Sub Private Sub TextBox1_Change()   Dim vRet As Variant   ' // #N/A などのエラー値が返る場合があるので、Variant 型変数で受ける   vRet = Application.VLookup(TextBox1.Text, _                 Range("Sheet2!A:B"), _                 2, _                 False)   ' // エラー値かどうかで条件分岐   If VarType(vRet) <> vbError Then     TextBox2.Text = vRet   Else     TextBox2.Text = "<< 該当なし >>"   End If End Sub

pop2003
質問者

補足

早速の回答ありがとうございました。 凄く上手く出来ました。感謝しています。 一つ質問なんですが .Text="ここにIDを入力して下さい" という記述は カーソルを当てると表示出来る? という記述なのでしょうか? すいません! 教えて下さい。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> カーソルを当てると表示出来る? > という記述なのでしょうか? あー。。余計なことだったみたいですね^^; Private Sub UserForm_Initialize()~End Sub という部分は、フォーム が読み込まれた時に自動実行されます。つまり、ID を入力する TextBoxに   「ここに ID を入力して下さい」 とフォームが読み込まれたタイミングで初期表示させているだけです。   # 一種の操作ナビゲーションです。 また、いちいち DELETE キーでそれを削除するのでは面倒なので、テキスト 全体を選択状態にしておいて簡単に上書き入力できるようにしています。 そんなことをしているだけで、オマケみたいなものです。 深い意味はありません。 それぞれのコマンドの意味は、ヘルプをお読みください。 > Range("Sheet2!A:B") データがあるのは、Sheet1 でしたね。適当に修正してみて下さい。

pop2003
質問者

お礼

ありがとうございました! 本当に助かりました! コマンドの意味のヘルプは 読み込んでいないため(コピーなので!) 参照出来ないので、独学でしています。 勉強になりました。ありがとうございました。

関連するQ&A

専門家に質問してみよう