• ベストアンサー

エクセル VBA ユーザーフォームで検索したいのですが

つい昨日触り始めた大初心者です。。 エクセルシートにて 数値を記した列と、詳細を記した列があります。 ユーザーフォームにて textboxに数値を入力し、ボタンをクリックすると 検索をして、ユーザーフォーム内のlabelに詳細が表示される、といったvbaを書いているのですが、どうにもうまくいきません。 また、textboxに検索範囲にない数値が入力されたときには Labelに「なし」と表示させたいのですが、 エラーが出てしまい、その処理もやはりうまく出来ません。 どなたかご教授いただけますでしょうか。

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

  • ベストアンサー
回答No.2

力業的なところがありますが、参考にしてください。 Labelに表示される詳細が判らなかったので、セルの値を表示するようにしました。 検索する範囲は、A列1行目から空白行までです。 検索値には、ワイルドカードが使用できます。 値が一致したところで終了。そのセルの値をLabel1に表示します。 -------------------------------------------------- Private Sub CommandButton1_Click() Dim r As Long, Txt As String  Label1.Caption = "なし"  Txt = TextBox1.Text  if Txt ="" Then Exit Sub  r = 1  With Worksheets("Sheet1")   Do Until .Cells(r, 1).Value = ""    If .Cells(r, 1).Value Like Txt Then     Label1.Caption = .Cells(r, 1).Value     Exit Do    End If    r = r + 1   Loop  End With End Sub

sarvdrop
質問者

お礼

ありがとうございます。 なるほど、大変参考になりました。

その他の回答 (2)

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

昨日VBAを始めた人が、わからないからとすぐ今日ここに質問するなんて。 1通り勉強してから質問すべきだと思う。 丸投げになる恐れも有る。ここはコードを書いてもらう下請けの場所ではないはず。 ーー (1)本質問はコントロールに関する部分 (2)検索に関する部分 と有ると思うが(2)の方が難しいと思うが、そちらはどのようにしたのでしょう。 (1)はとりあえずMsgBoxの応答(検索条件、内容)を(このほうが簡単なので)使ってやってみて、切り分けて勉強したら。 >labelに詳細が表示される も普通の使い方ではないと思う。エクセルVBAならフィルタなどによって、シートに出すのが普通では。

sarvdrop
質問者

お礼

おっしゃる通りです。 始めたばかりで混乱のあまり無茶な質問をしてしまいました。 貴重なご意見参考にさせていただきます。 もっと勉強してみます。ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

なぜエラーになるかは、ネットを検索すれば沢山の解説があります。 エラーをどのように回避するかも同時に書かれているはずです。 検索用のコードくらいは提示しましょう。

関連するQ&A

  • エクセルVBA ユーザーフォーム 検索

    現在VBAにてユーザーフォームにて入力したデータをシート1に転記するものを作成しました。 この転記したデータを生かして作業したいと考えております。 データは商品データで A    B C E F 商品コード 商品名  区分  単価  備考 となっており ユーザーフォームも TEXTBOX1=A TEXTBOX2=B と言う様になってます。 現在考えているのがこのデータの一部を変更したい場合、コマンドボタンを押すと商品コード入力用boxがでてきて、商品コードを入力するとA列から検索し該当する商品データをユーザーフォーム上に表示するようにしたいのです。 そのデータがA75行にあったとします。 そのユーザーフォーム上で単価を変更した場合検索した行(A75行)にそのまま上書きする様にしたいです。 説明がうまくできてないかも知れませんが、どなたかご教授願います。

  • Excelのユーザーフォームに検索機能をつけたい

    書籍やインターネットををみながらユーザーフォームを作成し、前後への移動、 データ修正、新規作成、削除を行うことは無事にできるようになりました。 しかし、このままでは閲覧、修正がメインとなってしまい、 検索ができない為何とかできないものかと考えています。 A列 B列 C列    D列  E列 1  A  タイトル1 本文1 更新日 2  B  タイトル2 本部2 更新日 3  A  タイトル3 本部3 更新日 上記のようにシートに追記されていきます。 H2がデータ最終行となります。H1がユーザーフォームに表示されてる行です。 ユーザーフォームの情報は以下の通りです。 TextBox4・・・A列 ComboBox1・・・B列 TextBox1・・・C列 TextBox2・・・D列 TextBox3・・・E列 CommandButton1・・・前に移動 CommnadButton2・・・後ろに移動 CommandButton3・・・データ修正 ToggleButton1・・・新規作成 CommandButton5・・・削除 ToggleButton2・・・検索(を予定) ユーザーフォームを起動するとSheetは非常時となります。 その中で各項目の入力や修正を行っております。 「検索」ボタンを取り付けてありますが、機能はしていません。 現在、希望している動作としまして、以下の通りです。 1.可能であればもう1つの検索ユーザーフォームを表示  検索欄は1つ、ボタンも1つ。 2.入力した検索キーワードが含まれているデータを  C列、D列から検索する。 3.最初のユーザーフォームに戻り、検索結果を確認が可能。

  • 【Excel VBA】テキストボックスの値を検索するには?

    VBA初心者でわからないことが多く、困っています。 下記のことを行いたいと考えています。 データシートのC列(C3~C4000)にシリアルNoが4000件入っています。 ユーザフォームで、TextBox1、TextBox2、TextBox3、TextBox4、OKボタン、貼り付けボタンを作成しています。 これらを使用して、下記のことを行いたいと考えています。 (1)TextBox1にシリアルNoを入力すると、TextBox3に同じ値が入力される。 (2)TextBox2に台数を入力すると、TextBox1に入力されている値を基準にして、その台数の最終行のシリアルNoをC列から検索し、TextBox4に入力する。 (3)OKボタンを押すと、TextBox3とTextBox4のシリアルNoの範囲をC列から範囲選択した状態にする。 (4)貼り付けボタンで、選択した範囲をコピーし、別シートのB11から下へ貼り付ける。 どうぞご教授ください。よろしくお願いします。

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

    初心者の質問で申し訳ございません。 ユーザーフォームを利用して検索ボタンを作ろうと考えています。 ユーザーフォームでテキストボックスを2個と コマンドボタン1個を作成し、 テキストボックス1に検索したい氏名を入力して コマンドボタンを押すと、 ワークシート(ワークシート名、データ)に作成されたデータのD列から 一致するものを検索し、 一致したデータのA列にある「番号」をテキストボックス2、 表示する。 というマクロが書けず困っています。 よろしくお願いします。

  • エクセルvbaセル範囲について

    困っております。 ご教授ください。 エクセルシート上に1~10の数字が列方向に並んでいます。 ユーザーフォームでtextbox1とtextbox2を作成します。 textbox1とtextbox2は1~10の間で範囲を入力します。 textbox2でエンターを押されたときに処理が開始します。 例えばtextbox1に「3」、textbox2に「8」が入力された場合、 3,4,5,6,7,8のセル範囲を選択したいのですがどのようにすればよろしいでしょうか。 よろしくお願いします。

  • EXCEL VBAのユーザーフォームの操作方法について教えていただきたいことがあります

    EXCEL VBAのユーザーフォームの操作方法について教えていただきたいことがあります。 (1)ユーザーフォームにテキストボックスを2つ作る (2)コマンドボタンを1つ作る。 この場合に、コマンドボタンを押すと、セットフォーカスされている方のテキストボックスに「新春」と表示させることはできるのでしょうか。 キーボードは当然セットフォーカスされているテキストボックスに入力されますが それと同じ機能をコマンドボタンにも持たせたいのです。 Private Sub CommandButton1_Click() で TextBox1がセットフォーカスされているならTextBox1に"新春"と入力する TextBox2がセットフォーカスされているならTextBox2に"新春"と入力する というような条件式になるのでしょうか。 色々調べましたが答えが見当たりません。 よろしくお願いいたします。

  • VBA フォームに入力したものを検索しエクセルへ

    わたしはVBA初歩で現在勉強しているものです。 VBAでユーザフォームに検索窓を設置しました。 下記のことをできるようにしたいです。 (1)フォームの検索窓に文字を入力 (2)フォームのボタンを押す (3)googleで(1)の文字を検索(サイトはshowしなくてよい) (4)検索結果のすべてを   A列 番号   B列 タイトル   C列 URL というように順次流していく。 ↑このようなものを作りたいのですが、どのようなコード記述をすればよいでしょうか? 教えてください。 よろしくお願いいたします。

  • エクセルのユーザーフォームの作り方で

    エクセルのVBAの初歩的なことで教えてください。小学生の子供用の学習ソフトを試作しています。シート1を問題の表示画面とし、シート2に問題のデータを保存しています。学習者はシート1を見て、最初に名前や使った日をユーザーフォームに入力すると、そのデータがシート1の表示されていない下の方のセルに記録されるようにマクロを組んで作りました。そのユーザーフォームを、シート1に作ったコマンドボタン(テキストは「開始」としました)を押すと表示されるようにしたいのです。そのためのコマンドボタンをどのように作ればよいでしょうか。ユーザーフォームの方は、マクロを実行すれば立ち上がり正常に入力(登録)できます。VBAの本を読んで独学で勉強し始めたばかりですので、できればわかりやすく教えてください。

  • Excel VBA ユーザーフォームについてs

    ExcelVBAでユーザフォームを作成していますが行き詰まっています。 お助け下さい m(__)m VBAの処理内容を新Sheetへ保存し、 その内容をユーザフォームへWorkSheetとして表示させて エンドユーザに直接編集してもらおうと思っています。 ユーザフォームの『コントロールの追加』で「Microsoft Office Spreadsheet XX.X」を追加して 空のWorkSheetを追加することは出来たのですが、 このWorkSheetを空でなく前出の処理内容を反映したSheetにすることは出来るでしょうか? VBA処理 ⇒ 結果反映WorkSheet(1)作成 ↓ ユーザフォーム表示 : (1)を表示したい よろしくお願いします。

  • VBA_ユーザーホーム内の処理について

    エクセルでVBAを使用して、データ整理のためのツールを作っています。ユーザーホームを使って、作っているのですが、例えば、複数のCOMBOBOX(例:combobox1~3とします。)の選択値(例:1~3とします)の和をTEXTBOXかLABELでユーザーホーム内に表示したいのですが、どうも、うまくいきません。sheet(セル)にUPDATEした数字を読んできた和を表示するのではなく、単純に入力値の和を一時的に表示してくれればいいのです。つまり、何も入力されていない場合は、”0”と表示していて欲しいのです。同様に複数のTEXTBOX(例:TEXTBOX1~3とします)の入力値(例:1,3,5とします)の和(=9)をTEXTBOXかLABELでユーザーホーム内に表示したいのです。よろしくお願いします。コードを頂けると助かります。

専門家に質問してみよう