エクセルVBA、チェックボックス付きのListBoxのInputBox?を作ってみた
ユーザーからデータを受け取りたいときはInputBoxを使うんだけど
これだと1つしか受け取れなくて事足りないときがある
そこでつくってみたのがこれ↓
チェックボックス付きのリスト形式のInputBoxみたいなの
ボタンを押すとチェックの入った項目の配列を返す
受け取った配列(Ash)の中身
チェックした「ささやき」と「いのり」が入っている
わてんはHighになりました
ユーザーフォーム
ListBoxとボタンを追加しただけ
ユーザーフォームのコード
ユーザーフォームを呼び出す標準モジュール
思いつくエラー処理は
ユーザーが何も選択しないでボタンを押したとき
ボタンを押さずにフォームのXボタンを押して閉じられた時
ユーザーフォームコード
標準モジュールのコード
↑標準モジュールの
Ash = Userform1.doModal
ってのが呼び出しているところで、InputBoxなら
Ash = InputBox
こうなるところ
doModal関数のMe.Showでユーザーフォームが表示される
ユーザーがリストを選んで
ボタンを押すと
GetWordsが実行されて
グローバル変数のmyWordsに選択された項目名が入る
ユーザーから見るとボタンを押した時点でユーザーフォームが閉じられるのが自然だけど、処理はまだ終わっていないので閉じることはできないので
Me.Hide
これで非表示にして閉じたように見せかけている
ボタンを押したときの処理が終わるとここに戻ってくるんだけど
この流れがよくわからん、こうなってくれないと困るんだけどね。
これでユーザーフォームの方は終わりで取得したmyWordsは標準モジュールの方へ送られる
標準モジュール
ユーザーが選択した項目名が取得できている
ここまで来てからユーザーフォームを閉じて完了
参照したところ
関連記事
午後ツールその53、ウィンドウの整列、異なるブック(ウィンドウ)の整列 ( Windows ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14655664.html
http://blogs.yahoo.co.jp/gogowaten/14655664.html