【VBA】リストフォームが小さいのでユーザーフォームで作ってみる

excelvbaエクセル

データの入力規則から作るトグルリストはサイズを変えることができません。

しょうがないのですが、シートが広い場合などは出現したリストが小さくて操作しにくい場合があります。

多少面倒ですが自作のリストでサイズ変更できたほうが便利なので作ってみましょう。

ただ、前提として1リストにつき1つの設定が必要なので数が多いリストに関しては不向きなのでご了承ください。

デモのエクセルはこんな感じです。

スポンサーリンク

ボタンを作成

「開発」⇒「挿入」⇒「activexコントロール」のコマンドボタンを作成します。(マクロ登録ができれば何でも大丈夫です。)

そのボタンに下記を記述します。

Sub CommandButton1_Click()
'リストセット
HT_setFile = ActiveSheet.Name 'データファイル名
Erase list_array'リストリセット
list_target = "" 'ターゲットリセット
list_array() = ThisWorkbook.Worksheets(HT_setFile).Range("E2:E8") 'リスト
Set list_target = ThisWorkbook.Worksheets(HT_setFile).Range("B2") 'ターゲットセル
List.Show
End Sub

caption(ボタン内の表示文字)を「▼」とかにするとトグルっぽくなります。

標準モジュール

標準モジュールにはPublic変数を指定しておきます。

変数名に気を付けてください。

Public list_array() As Variant 'リスト用変数
Public list_target As Variant 'リスト用変数

ユーザーフォーム

ユーザーフォームの見た目はこんな感じです。

ダウンロードはこちら

list.zip (9 ダウンロード)
Sub UserForm_Initialize()
'開始時の処理
'リストを格納
ListBox1.list = list_array
End Sub

Sub ListBox1_Click()
'選択対象がクリックされたら
Dim HT_list As Variant
HT_list = ListBox1.Text'選択を取得
Unload Me'フォームをアンロード
list_target.Value = HT_list'対象セルに挿入
End Sub

簡単ですね。

肝はsheetモジュールからユーザーモジュールに変数を渡すというところです。

これにはpublic変数が必要になりますが取り扱いに気を付けてください。

 

コメント

タイトルとURLをコピーしました