オリジナル入力画面を作ることができるユーザーフォーム。
波乗りアヒル
カレンダーや住所録を作った時にリストボックスの値が、自動的に入力済みのセルだけ探して表示されたら便利だと思いませんか?
この技を習得するまでは、リストボックスのプロパティに範囲をあらかじめ指定しておいていましたが、予備も含めて余分な範囲まであるので無駄になっていました。
波乗りアヒル
🔰のおじさんには、リストボックスに表示するセルの範囲を入力済みセルを自動的に探して表示させるなんて技。
レベル高すぎてなかなかうまくVBAコードにたどり着くことができなかったのですが、ようやく成功しました。
スポンサーリンク
ユーザーフォーム表示直前の動作設定
ユーザーフォームが表示される直前に作業させることができる、InitializeというVBAコードがあります。
このInitializeをユーザーフォーム自体に組み込むことによって、指定した作業を行ってからユーザーフォームが表示されてくれるので、やっと最近使えるようになりました。
そして、リストボックスに表示させるセルの範囲を入力済みセルのみ自動的に探して表示することも可能になりました。
実際にユーザーフォーム自体にこのようなVBAコードを書いてあります。
セルN列にリストボックスに表示したいリストがN1から順番にN2,N3…と記載しています。
Private Sub UserForm_Initialize()
Range(“N1”).Select
Dim i As Integer
Do While ActiveCell.Value <> “”
i = i + 1
ActiveCell.Offset(1, 0).Select
ListBox1.AddItem (Cells(i, 14))
Loop
End Sub
- ユーザーフォームを表示する直前に実行する
- セルN1を選択する
- 整数型の変数「i」を宣言する
- 繰り返し処理をして選択されたセルが空欄セルを探す
- 変数「i」は「i」+1をする
- 選択したセルの1行下0行右を選ぶ(同一列という事)
- リストボックスに記載するのはセル「i」行目の14列目(N列)
- 見つかるまで探し見つかったら終了
- マクロ終了
波乗りアヒル
空欄セルを表す<>””というのを知ったので使えるようになりました。
Initializeを書く場所に関しては、下記ページに書いてあるのでここでは省略します。
波乗りアヒル
ご覧いただきありがとうございます。
ブログランキングに登録しています。
少しでもお役に立てれば幸いで、参考になったようでしたら応援よろしくお願いします。
ユーザーフォームを使えばこんなに便利に早く作業が終わりますよ
波乗りアヒル
エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?