- ベストアンサー
EXCEL のマクロ教えてください。
Sheet1 に以下のデータがあります。 A B C D E F G 1 小泉純一郎 男 111-1111 東京都・・ 03-3111-**** 総理大臣 2 石原慎太郎 男 111-2222 東京都・・ 03-3222-**** 都知事 3 ・ ・ データはA1~G100程度あるとします。 ユーザーホームにはテキストBOX1からテキストBOX5まであります。 B列にある1つの名前をテキストBOX1に入力すると、 テキストBOX2からテキストBOX5に入力した行のCからGまでの データを表示させるのにはどうすればいいでしょうか御教授ください。 EXCEL2000です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> ユーザーホームにはテキストBOX1からテキストBOX5まであります。 テキストボックスの数が1個足りないような・・・ 下記サンプルコードは、TextBox1に入力した内容で、部分一致で検索し、 見つかった場合は、C列~G列の内容をTextBox2~6に表示します。 見つからなければ、TextBox2~6を空白にします。 読み(カナ・かな)でもOKです。(Phonetic が、設定されていればです。) 詳しくは、ヘルブで、Findメソッドを参照してください。 データのあるシートがアクティブになっていることが、条件のときです。 TextBox1の更新時イベントにつぎのようにコードを記述します。 Private Sub TextBox1_AfterUpdate() Dim Rng As Range Set Rng = Range("B:B").Find(Me.TextBox1.Value) If Not Rng Is Nothing Then Me.TextBox2.Value = Rng.Offset(0, 1).Value Me.TextBox3.Value = Rng.Offset(0, 2).Value Me.TextBox4.Value = Rng.Offset(0, 3).Value Me.TextBox5.Value = Rng.Offset(0, 4).Value Me.TextBox6.Value = Rng.Offset(0, 5).Value Else Me.TextBox2.Value = "" Me.TextBox3.Value = "" Me.TextBox4.Value = "" Me.TextBox5.Value = "" Me.TextBox6.Value = "" End If Set Rng = Nothing End Sub
その他の回答 (1)
- Hageoyadi
- ベストアンサー率40% (3145/7860)
ユーザーフォームとテキストボックスという形式が必須条件でしたら、 http://www.sigoto.co.jp/excel/activex/lesson08/activex22.htm が参考になるかと。 でも、抽出したデータを利用するには、VLOOKUP関数を使う方法や、IF関数の組み合わせ、オートフィルタを使うほうが楽だと思います。
お礼
回答ありがとうございます。 >ユーザーフォームとテキストボックスという形式が必須条件でしたら、 必須でした。関数も用途に応じて使ってます。 見落としたようですね。Excel全開は私のお気に入りでした。 追記 http://search.yahoo.co.jp/bin/search?p=Excel+%A5%BD%A5%D5%A5%C8&s=a&n=20 上記アドレス、Excelに関するサイトはいつも参考にしてます。 エクセル・アクセス・ワード!等もおすすめです。
お礼
>テキストボックスの数が1個足りないような・・・ 御指摘のとうりです。 私の求めていた回答でした。 ありがとうございます。