リストボックスの値を、他のユーザーフォームから更新できない。

このブログから得るもの

リストボックスの値を、他のユーザーフォームから更新する方法が分かる。


1 背景の説明

アンケートを内容が変っても楽に作れるVBAを作成しようと、ユーザーフォームを作成していました。
ユーザーフォーム1にリストボックスを持たせて、「項目作成」というボタンを押したらリストボックス更新する、というものを作ろうとしていました。


<フォームの図>
f:id:bimori466:20200807043334p:plain


<更新するためのコード{項目を登録するボタン}>

Private Sub cmd_Register_Click()


'リストを作成
ReDim lst_QuestionItem(AnswerItemCount, 2)

'項目の更新処理↓↓
UF_アンケート作成.lst_QuestionItem.List(0, 0) = txt_QestionNo_1.Value
UF_アンケート作成.lst_QuestionItem.List(0, 1) = txt_QuestionItem_1.Value
UF_アンケート作成.lst_QuestionItem.List(0, 2) = cmd_Required_1.Value


【結論】これではエラーとなります。

<エラーメッセージ>
f:id:bimori466:20200807044346p:plain

2 解決策。まず空白を追加する。

<更新するためのコード{項目を登録するボタン}>に以下のコードを1行追加します。

’追加↓↓
UF_アンケート作成.lst_QuestionItem.AddItem ""

UF_アンケート作成.lst_QuestionItem.List(0, 0) = txt_QestionNo_1.Value
UF_アンケート作成.lst_QuestionItem.List(0, 1) = txt_QuestionItem_1.Value
UF_アンケート作成.lst_QuestionItem.List(0, 2) = cmd_Required_1.Value


そうするとリストボックスの更新が可能になります。

<更新可能になったフォームの図>
f:id:bimori466:20200807050457p:plain

3 感想

正直、なぜこれで解決できるのかが分かりません(;^ω^)。空白を入れることでリストが作成されるのか??
とりあえず、これで作成を進めそうなのでよしとします。
同じ悩みを抱える人の解決策になれば幸いです。

4 参考サイト

安定のOffice tanaka様でございます↓↓

officetanaka.net