• ベストアンサー

VBAユーザーフォーム上での検索がしたい

ユーザーフォームを作成したのですが、コードが分かりません教えて下さい。 ・ユーザーフォームは氏名を入力欄とし以下住所、電話番号等、個人情報が氏名を入力することによって、出てくるようにしたいのですが、可能ですか?個人情報はEXCELシート上にあり、随時追加されていきます。

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

  • ベストアンサー
  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.2

早速の補足有難うございます。サンプルマクロを組んでみました。次のように操作してみて下さい。 ・データの入力されているブックを開いてVBE画面を表示させ、ユーザーフォームを挿入する(フォームのオブジェクト名はそのまま。) ・フォームにテキストボックスを10個配置する。(テキストボックスのオブジェクト名はそのまま) ・テキストボックス1にマウスポインターをあわせてダブルクリックしてフォームモジュールを表示させる。この時 Private Sub TextBox1_Change() End Sub というのが自動的に表示されるので、削除し、そこへ下記のコードをコピー&ペーストする。 Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Dim myRange(1) As Range Dim i As Integer Dim myTxt As String Set myRange(0) = Worksheets("管理表").Range("E2:" & Worksheets("管理表").Cells(Rows.Count, 5).End(xlUp).Address) Set myRange(1) = myRange(0).Find(Me.TextBox1.Text, LookAt:=xlWhole) If myRange(1) Is Nothing Then MsgBox "入力した氏名は登録されていません。", vbOKOnly + vbCritical, "入 力 エ ラ ー" Me.TextBox1.Text = "": Cancel = True Else For i = 2 To 10 Select Case i Case 2 myTxt = myRange(1).Offset(0, -4).Value Case 3 myTxt = myRange(1).Offset(0, -3).Value Case 4 myTxt = myRange(1).Offset(0, -2).Value Case 5 myTxt = myRange(1).Offset(0, -1).Value Case 6 myTxt = myRange(1).Offset(0, 1).Value Case 7 myTxt = myRange(1).Offset(0, 2).Value Case 8 myTxt = myRange(1).Offset(0, 3).Value Case 9 myTxt = myRange(1).Offset(0, 4).Value Case 10 myTxt = myRange(1).Offset(0, 5).Value End Select Me.Controls("TextBox" & i).Text = myTxt Next i End If End Sub 'Private Sub TextBox1_Change() ' 'End Sub ・画面左上のVBAProjectと書かれている下のThisWorkbookをダブルクリックし、表示された右側の白い部分に下記のコードをコピー&ペーストする。 ・ブックを保存して終了し、再度立ち上げる。 ユーザーフォームが自動で表示されるので、TextBox1に適当な名前を入力してみて下さい。貴方様の思い通りの動作が体験できるかと思います。 もし、不具合・ご不明な点等がございましたら、お気軽に補足して下さい。

matu1
質問者

お礼

完璧です。有難うございました。まだまだ勉強中なので分かりやすく書いていただけて大変助かりました。何か良い参考書などあれば教えていただきたいです。

その他の回答 (1)

  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.1

初めまして。可能です。 もし、私でよろしければコピー&ペーストするだけで貴方様の思い通りの動作をするサンプルマクロを組んでみたいと思います。ご希望の節は、次の点を教えて下さい。 ・ユーザーフォームに表示させたい住所・電話番号等が入力されているブック名・シート名・各項目のセル番地 お手数をおかけいたしますがよろしくお願いいたします。

matu1
質問者

補足

可能というお答えを聞かせていただき感激しております。 早速ですが下記内容で宜しくお願いします。 ブック名:資料請求 シート名:管理表 A2:受付番号 B2:受付西暦 C2:受付月 D2:受付日 E2:氏名 F2:郵便番号 G2:住所 H2:電話番号 I2:入手経路 J2:備考 以上は項目行でA3から入力しています。