みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Excel2003 VB コマンドボタン

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

投稿日時 - 2010-05-29 16:00:26

QNo.5930326

困ってます

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

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

投稿日時 - 2010-05-30 19:40:22

ANo.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を入れる)の質問と表現したほうが良いと思う。

投稿日時 - 2010-05-29 17:11:43

補足

ご回答ありがとうございます。
不慣れで具体的な質問をできず、申し訳ございません。なお、現状は次の通りです。

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

よろしくお願いします。

投稿日時 - 2010-05-30 13:01:48

ANo.1

コードの例は一つ,前回のご質問で書いておきました。
じゃぁ,また違う例を一つ書いてみましょうか。

Sheet1:
A列 B列
ID 名前

private sub commandbutton1_click()
textbox2 = application.vlookup(val(textbox1), worksheets("Sheet1").range("A:B"), 2, false)
end sub




あなたが今いったい
・シートとテキストボックスにそれぞれどんなデータを入れているのか
・どんなマクロを書いたのか
・実行してみたら意図と違うどんな結果が現れたのか

そういった「今現在の具体的なエクセルの姿」を手抜きせずにご相談に書くようにしてみると,回答者側にも「あぁここで失敗してるな」とか「ここが合ってないな」といった事が判って「それだとここに問題があるからこうしましょう」と的確なアドバイスもすぐに寄せられます。

事実とは違う嘘情報を質問に書いてみたり,そもそも情報提供が無ければ,偶然上手く行っても次に失敗するか,何時までたってもあっちこっち迷走するだけです。

投稿日時 - 2010-05-29 17:09:11

あなたにオススメの質問