• ベストアンサー

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です。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.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

MCC78
質問者

お礼

>テキストボックスの数が1個足りないような・・・ 御指摘のとうりです。 私の求めていた回答でした。 ありがとうございます。

その他の回答 (1)

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.1

ユーザーフォームとテキストボックスという形式が必須条件でしたら、 http://www.sigoto.co.jp/excel/activex/lesson08/activex22.htm が参考になるかと。 でも、抽出したデータを利用するには、VLOOKUP関数を使う方法や、IF関数の組み合わせ、オートフィルタを使うほうが楽だと思います。

MCC78
質問者

お礼

回答ありがとうございます。 >ユーザーフォームとテキストボックスという形式が必須条件でしたら、 必須でした。関数も用途に応じて使ってます。 見落としたようですね。Excel全開は私のお気に入りでした。 追記 http://search.yahoo.co.jp/bin/search?p=Excel+%A5%BD%A5%D5%A5%C8&s=a&n=20 上記アドレス、Excelに関するサイトはいつも参考にしてます。 エクセル・アクセス・ワード!等もおすすめです。

関連するQ&A