• 締切済み
  • 困ってます

Excel2003 VB コマンドボタン

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数553
  • ありがとう数9

みんなの回答

  • 回答No.3

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセルとVBのマッチング

    エクセルのデータのマッチングでVBを使おうと思っていますが、苦しんでます。 エクセルのシート1に参照元になるデータを取得する(ID、氏名など6つの項目)。 VBのユーザーフォームで6つのテキストボックスを用意する。 ユーザーフォームに入力されたIDがシート1のIDと一致したら、ユーザーフォームのテキストボックスにID以外の項目をシート1から拾い出す。 登録ボタンを押すとIDを含めた6つの情報がシート2に移動する。 といった処理をVBで行いたいと思うのですが、どなたかご教授下さいませんでしょうか。 よろしくお願い致します。

  • エクセル、コマンドボタンについて

    素人な質問ですみません。 シート1にコマンドボタンを作成しています。 このコマンドボタンを押すと、シート2のA1セルからE10セルに入力してある50の文字列から、ランダムにコマンドボタンのあるシート1のA1セルに表示させるようにしたいのですが。 このようなことは出きるでしょうか? VBAの知識もほとんどなく困ってます。 簡単に言うと、コマンドボタンを使って、別シートに入力してある文字列を表示させる方法ということになるでしょうか。 よろしくお願いします。

  • VBでDOSコマンドを実行し、結果をEXCELシートに貼りたい

    EXCELからVB等を使ってDOSコマンドを実行し、その実行結果を指定したEXCELシートに貼り付けることは出来ますでしょうか?例えば、EXCELシート内に配置したボタンを押すと、DOSコマンド「ipconfig」等が起動され、その出力結果を指定したEXCELシートに貼り付けるという動作をさせたいと考えています。よろしくお願いいたします。

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

どこまでやってみたのでしょうか。判らないと早々に投げ出した感じです。 データ例も挙げてありません。判りやすい説明のためには、回答者が考えないといけないことになる。 「>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を入れる)の質問と表現したほうが良いと思う。

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 不慣れで具体的な質問をできず、申し訳ございません。なお、現状は次の通りです。 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 よろしくお願いします。

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

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • VBからExcelに書き込む方法

    こんにちは。VB6.0(SP5),Excel2000,Win2000でVBの勉強をしています。 VBでコマンドボタンを押した時に、テキストボックスのデータを、Excelに書き込みたいと思っています。 特定のExcelに書き込むことは「GetObject」で出来たのですが、名前がわからない場合はどうしたらよいのでしょうか? ※ExcelはVBから起動したものではなく、人が任意のファイルを起動しています。Excelの名前はわかっていません(任意なので、何かわかりません) このような場合に、VBから書き込むのは可能なのでしょうか? よろしくお願いします。

  • コマンドボタン名の設定で

    お世話になります。 現在EXCELシート上に複数のコマンドボタンを置き、 そのコマンドボタン名をセルの値からとってこようとしています。 これがVBの考えでしたら ************************************************* Dim i as integer 'ループ用変数 '対象セルに値が存在しなくなるまでループ Do While Worksheets("Sheet1").Cells(i, 1) <> "" 'セルの値をコマンドボタン名に代入 Worksheets("Sheet1").CommandButton(i).Caption = Worksheets("Sheet1").Cells(i, 1).Value i = i + 1 Loop ************************************************* のようにできるのではないかと考え、いろいろと試行錯誤しているのですがうまくいきません。 VBAではこのようなやり方はできないのでしょうか? vbのように変数名でループさせるということは出来ないというような情報もあるのですが、出来ればこの考えに似たような感じのプログラムの組み方がしたいと考えております。 どなたかご教授よろしくお願いいたします。

  • Excel VBA --- コマンドボタンが表示上で消える ---

    Excel VBAの初心者です。 今回、マニュアル本を見ながら試行錯誤でマクロにチャレンジしています。 用語や説明が上手くできないかもしれませんがよろしくお願いします。 OSはWindows2000、Excelのバージョンは2000です。 sheet1をメニュー画面として、コマンドボタンをいくつか貼り付けて、そのシート名を表示したコマンドボタンをクリックすると別のシートに 飛ぶようにしています。 別のシートに飛んで、そこで作業を終えたら、今度はそのシート上に貼り付けた『メニューに戻る』コマンドボタンをクリックしてsheet1のメニュー画面に戻るようにマクロを組みました。 ところが、作業用のシートからメニューに戻ると前回クリックしたコマンドボタンが表示上消えてしまっています。 そのコマンドボタンがあった位置にカーソルを持って行ってクリックするとちゃんとコマンドボタンの動作をします。 同じような質問がないか検索してみましたら『コマンドボタン上の文字の表示がおかしくなる』という質問があって、下記コードを入れたら解決したそうなので、Sheet1に下記のようなコードを入れてみました。 でもダメでした。 Private Sub Worksheet_Activate() Application.ScreenUpdating = False ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollRow = 1 End Sub 解決方法のご教授をお願い致します。

  • ExcelVBA UserFormに沢山のボタンを貼り付けたい

    Excel2003のVBAを使っています。 コマンドボタンが沢山付いたユーザーフォームを起動したいのですが、 フォームに貼り付けるコマンドボタンの個数は、マクロを実行した時に決めたいです。 (例えば任意のセルの値を読み込むなどして) 要するにコードの中で、コマンドボタンの生成をしたいのですが、 可能でしょうか。 VBでプログラム組んでる知人に聞いたところ、「コントロール配列」なるものを利用すれば可能だそうですけど、 VBAにはそれが無いと聞きました。

  • EXCELからコマンドボタンでHPを開くには?

    競馬の自作ソフトをエクセルで作成したのですが エクセルからコマンドボタンで I-PATのURLを開く方法をご教授下さい。 shell関数というのがあるらしいですが使い方が分かりません。 当方、超初心者ですのでコードをまるまる教えて頂けると幸いです。よろしくお願いします。

  • Excelユーザーフォームでのデータ検索

    現在Excelマクロの勉強中ですが、ユーザーフォームでテキストボックスを4個とコマンドボタン1個を作成し、テキストボックス1にコードを入力してコマンドボタンを押すと、ワークシート(ワークシート名、住所録)に作成されたデータのA列からコードを検索(データは2行目から始まる)し、一致したデータのB列にある「名前」をテキストボックス2、C列の「住所」をテキストボックス3、D列の「電話番号」をテキストボックス4に表示する。 というマクロが書けず困っています。 わかる方教えてください。

  • マクロ コマンドボタンを押すともう一つコマンドボタン

    マクロ初心者です。宜しくお願いします。 コマンドボタンをクリックしたら、指定して開いたファイル上にもうひとつコマンドボタンを追加で表示させることは可能でしょうか? <詳細> ・コマンドボタンを押す ・エクセルのファイルを指定して開く ・指定して開いたファイルの「Sheet1のA1」に新たにコマンドボタンを出現させる。 ・「Sheet1のA1」に現れたコマンドボタンを押すとそのファイルを印刷する。 みたいな事をしたいのですが、可能でしょうか?? 宜しくお願いします。

  • コマンドボタンで別ファイル・別シートへリンク

    VBA初心者です。 コマンドボタンをクリックしたら、別のファイル内の特定シートにリンクできるようにしたいのですが、どのようなコードを書けばよいのでしょうか? 勉強不足で大変申し訳ありませんが、どなたかアドバイスをお願いします。

  • VBを貼り付けたボタンからVBが起動できなくなった

    よろしくお願いします。 エクセルのシートに配置していたボタンからVBが起動できなくなりました。 VB単独では動作するのですが。 他のブックのVBを貼り付けたボタンは、起動します。 起動できなくなった日以前にコピーしていた同一のブックも同様に起動しませ。 解決法があれば教えていただけないでしょうか。

  • エクセル既存のコマンドをユーザー定義のコマンドボタン等に割り付けたい。

    エクセル既存のコマンドをユーザー定義のコマンドボタン等に割り付けたい。 お世話になります。 どなたか教えてください。 他のアプリケーションから画像をキャプチャーし、 それをエクセルに貼り付け、そこにオートシェイプなどを使い修正指示等を描きこむ作業をしています。 少しでも楽にしようと、ユーザーフォーム上に配置したコマンドボタン・ピクチャ等に既存のコマンドを割付て見ました。 オートシェイプ 線 の場合 Application.CommandBars.FindControl(, 130).Execute これで(上記の作成した)ボタンを左クリックした時に、オートシェイプのツールバー内の“線”コマンドと同じように1本の線がひけました。 ただ、オートシェイプのツールバー内の“線”コマンドを使用した時は、 シングルクリックの時は線を一本描くとコマンドが終了、ダブルクリックの時は線が連続して描けます。 自分で追加したボタンでもこのように動作させる方法は無いでしょうか? (ダメとは思いつつダブルクリックのイベントに上記コードを記述しましたが、、、やはりダメでした。) さらにexcel2003の場合は上記コードが動作したのですが、 2007の場合は動作せず、線が描けません。なぜでしょうか? 以上2点かなり調べましたが解らず、行き詰まってしまいました。 どなたか教えてください。 よろしくお願いいたします。