• 締切済み

Excel2003 VB コマンドボタン

Excel2003 VB コマンドボタン VB初心者です。コマンドボタンをクリックしたら、テキストボックス1に入力してあるコードと一致する値を別シートのデータTBからvlookupで呼び出してテキストボックス2に表示したいのですが、うまくいきません。コードの例を教えていただけると助かります。よろしくお願いします。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

コードを拝見しましたが、特にエラーになりそうな箇所はないと思うのですが データTBですが A列は数値でしょうか?もしそうであれば txtname = Application.VLookup(txtcode * 1, Worksheets("材料TB").Range("A2:C65000"), 2, False) とtxtcode * 1 と無意味な掛け算でもしてみてください。 単に、txtcode が文字列で A列が数値だったりして?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

どこまでやってみたのでしょうか。判らないと早々に投げ出した感じです。 データ例も挙げてありません。判りやすい説明のためには、回答者が考えないといけないことになる。 「>vlookupで呼び出して」という考えが、関数を使う思考に囚われていると思われ、適当ではない。 VLOOKUPは指定範囲の該当の最初の行しか捉えられませんよ。 ーー ユーザーフォームにテキストボックス2つとコマンドボタンを1つ貼り付け、コマンドボタンのクリックイベントに Private Sub CommandButton1_Click() x = TextBox1.Text MsgBox x d = Range("A65536").End(xlUp).Row MsgBox d For i = 2 To d If Cells(i, "A") = Val(x) Then t = t & Cells(i, "B") & vbCrLf End If Next i TextBox2.Text = t End Sub のようなコードを書き実行する。 d = Range("A65536").End(xlUp).Row は最下行番号をさがす常套的なコードです。 ーー データ例は A,B列で コード 氏名 1 山田 2 大坂 3 木村 2 古谷 1 木曽 3 高山 2 志村 1 大津 と仮定して、 実行後テキストボックスに、例として「1」を入れてコマンドボタンをクリック。 確認用に(コードの)1や9(行)は表示され、テキストボックス2に 山田 木曽 大津 と表示されると思います。 ーー 注意事項はテキストボックスの値が文字列で返されること。 セルの値が数値ならテキストボックスの条件値をVALで数値化して比較すること。 上例では簡単のために該当分のB列データだけを表示しているが、それ以上を望むとか、 コード指定のチェックとかシートの指定とか、いろんなことが考えられるが、そういうことまでを 考慮して、質問文に表現し質問できてないですね。 該当行を探索する方法として、上記は基本的で初歩的な方法ですが、他にも考えられるので勉強のこと。 (フィルタなど)。 質問もExcelVBA(Aを入れる)の質問と表現したほうが良いと思う。

torikeratopusu
質問者

補足

ご回答ありがとうございます。 不慣れで具体的な質問をできず、申し訳ございません。なお、現状は次の通りです。 Sheet2(材料TB) A列 B列  C列 1  材料A  東 2  材料B  西 3  材料C  南 以下数百種 ユーザフォームに3つのテキストボックス(txtCode,txtName,txtClass)とコマンドボタンを配置 コマンドボタンに以下のコードを書いたところデバッグされてしまいます。 Private Sub CommandButton1_Click() '材料コードに一致する材料名と分類を表示 If Application.CountIf(Worksheets("材料TB").Range("A2:A65000"), txtCode) = 0 Then MsgBox "材料コードに一致する材料がありません。" Else txtName = Application.VLookup(txtCode, Worksheets("材料TB").Range("A2:C65000"), 2, False) txtClass = Application.VLookup(txtCode, Worksheets("材料TB").Range("A2:C65000"), 3, False) End If End Sub よろしくお願いします。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

コードの例は一つ,前回のご質問で書いておきました。 じゃぁ,また違う例を一つ書いてみましょうか。 Sheet1: A列 B列 ID 名前 private sub commandbutton1_click() textbox2 = application.vlookup(val(textbox1), worksheets("Sheet1").range("A:B"), 2, false) end sub あなたが今いったい ・シートとテキストボックスにそれぞれどんなデータを入れているのか ・どんなマクロを書いたのか ・実行してみたら意図と違うどんな結果が現れたのか そういった「今現在の具体的なエクセルの姿」を手抜きせずにご相談に書くようにしてみると,回答者側にも「あぁここで失敗してるな」とか「ここが合ってないな」といった事が判って「それだとここに問題があるからこうしましょう」と的確なアドバイスもすぐに寄せられます。 事実とは違う嘘情報を質問に書いてみたり,そもそも情報提供が無ければ,偶然上手く行っても次に失敗するか,何時までたってもあっちこっち迷走するだけです。

関連するQ&A