五十音ボタンに対応したリストボックスを表示するには?

Question 55.3   Previous Next
よく、銀行などの支店選びに利用されているような雰囲気にしたいのです。
エクセルのシートに科目のヨミガナと、その漢字とコードが何行かあります。VBAで作成したフォームに、五十音のコマンドボタンがあります。
例えば、【あ】のボタンを押したとしたら、そのフォームが閉じて、次ぎのフォームのリストボックスに【あ】が先頭につく科目の一覧だけを表示したいのですが、どうしたらいいのか教えて下さい。宜しくお願いします。
Answer   Copyright (C) 2002.9.12 永井善王
50音ボタン ご自分でどこまで作れて、わからないのはどこなのかを教えていただけると、お答えしやすいのですが。 とにかく作ってみましょうか。
科目の一覧
左図のように五十音のコマンドボタン群があって、「あ」のボタンをクリックすると、

頭文字が該当する科目の一覧を右図のようなリストボックスに表示したいのですね。

左図では省略してますが、コマンドボタンは当然のことながら約50個あることになります。そして下図のように、リストボックスのリストへ表示するためのソースが、ワークシートに五十音別に作成されているものとします。 リストソース

イベントプロシージャについては、ご存知ですね。
作成するマクロは、コマンドボタンをクリックしたときに発生するイベントを利用して、リストボックスを表示することになると思います。

その場合のポイントは、リストボックスを表示する直前に、選択された五十音に対応するリストのソースを RowSourceプロパティで設定することです。
たとえば、コマンドボタン1が「あ」であるとして、それがクリックされたときのマクロは次のようになるかと思います。 (左上図・・UserForm1、右上図・・UserForm2)
Private Sub CommandButton1_Click()
    UserForm1.Hide
    UserForm2.ListBox1.RowSource = "科目!A2:C3"
    UserForm2.Show
End Sub
なお、右上図のリストボックスは、ColumnCountプロパティを 3に設定しているので、3列表示になっています。
サンプルブックのダウンロードは ここをクリック  (YNxv9g0920_50ON.xls 58KB)
※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。

 

Excel VBA Macro