リストボックスに入力済みセルの値だけ読み取って表示する方法

Excel-VBA ユーザーフォーム

スポンサーリンク


オリジナル入力画面を作ることができるユーザーフォーム。

波乗りアヒル
波乗りアヒル

カレンダーや住所録を作った時にリストボックスの値が、自動的に入力済みのセルだけ探して表示されたら便利だと思いませんか?

この技を習得するまでは、リストボックスのプロパティに範囲をあらかじめ指定しておいていましたが、予備も含めて余分な範囲まであるので無駄になっていました。

波乗りアヒル
波乗りアヒル

🔰のおじさんには、リストボックスに表示するセルの範囲を入力済みセルを自動的に探して表示させるなんて技。

レベル高すぎてなかなかうまく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
  1. ユーザーフォームを表示する直前に実行する
  2. セルN1を選択する
  3. 整数型の変数「i」を宣言する
  4. 繰り返し処理をして選択されたセルが空欄セルを探す
  5. 変数「i」は「i」+1をする
  6. 選択したセルの1行下0行右を選ぶ(同一列という事)
  7. リストボックスに記載するのはセル「i」行目の14列目(N列)
  8. 見つかるまで探し見つかったら終了
  9. マクロ終了
波乗りアヒル
波乗りアヒル

空欄セルを表す<>””というのを知ったので使えるようになりました。

Initializeを書く場所に関しては、下記ページに書いてあるのでここでは省略します。

各コントロールまとめて転記シリーズ

ユーザーフォームを使うと配置したコントロール(テキストボックスやラベルなど)とセルとの間で値のやり取りが多くなります。

よく使うのでまとめてみました。

値の場所転記したい場所説明ページ
セルの値ラベル名VBAコード
セルの値テキストボックスの値VBAコード
セルの値コマンドボタンの表示名VBAコード
セルの値セルの値VBAコード
テキストボックス入力値セルの値VBAコード
波乗りアヒル
波乗りアヒル

成績表作成には知っておきたいExcel-VBAもくじ

ボウリングハンデキャップのつけ方
HDCPの種類はリーグのルールにより複雑に ボウリングの成績表(リーグ戦)で必ず必要になるのが、ハンデキャップ(HDCP)です。 ボウリングご予約の時に一番多く使われているのが、女性にだけハンデキャップをつけてあげることが多いですね。 だいだい何点ぐらいのハンデキャップが多いの?
ボウリングリーグ対戦表の数字を名前に自動変換する方法
リーグ戦の対戦表をエクセルで作る時、数字で表されている番号を名前に自動的に変換できると作業時間が短くなり効率的ですね。たった2つのエクセル関数を使うだけで、簡単にできるんです。今回の回戦数を入力するだけで一発変換完了。もちろんお客様にスケジュール対戦表として渡すことも簡単ですよ。
人数に応じてリーグ対戦表を自動選択する方法
複数の表があり、条件に合った表を選んで、さらにセルの値を選んで数字を名前に自動変換できると、とても便利なエクセルができますよね。ボウリングのリーグ対戦表も人数により表が異なるので、参加人数が決まったら、自動的に表を選んで対戦番号がこれも自動的に参加者名に変換されると便利で作業効率がアップして時間短縮になりますよ。
波乗りアヒル
波乗りアヒル

エクセルの勉強お疲れ様です。ちょっとひと休みしませんか?

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