JA福岡市様の作成のPDF(実践編PDF)では、リストボックスの項目用のテーブルを作ってSQLでリスト内容を設定して、という方法が推奨されているようです。
ただ、リレーション前提のテーブル設計は、Base では初心者は躓きやすい。
上記のPDFでは2番目に説明されている、直接リストボックスに値を設定する方法をお薦めします。
リストボックスの設定方法は、下記のとおり。
1.リストボックスのコントロールのプロパティの”データ”タブの”リストの内容の種類”を”値リスト”にする。
2.”全般”タブの”リストの項目”欄に任意の項目を記述。Shift+Enterで改行しながら。
この時、最終行に空行を1行入れること。 未選択状態の把握に使う。
3.”全般”タブの”行数”に、空行も含めた行数を設定。(本当に使う項目数より1多く)
4.”全般”タブの”標準選択範囲”に、空行が標準選択になるよう数値を入力。
この項目は0から数字が始まるので、設定数値は上の”行数”の設定数値より1少なくなるはず。
このリストボックスで選択された文字列を取得するマクロの例は、下記。
ボタンに割り当てる等して、試してみてください
Sub GetListStr
Dim formRealName As String
Dim listName As String
DIm lineCnt As Integer
Dim selectedNum As String
Dim selectedStr As String
formRealName = "●●フォームの本名●●"
listname = "●●リストボックスの名前●●"
oDoc = ThisComponent.getParent()
oAConnection = oDoc.CurrentController.ActiveConnection
oDraw = ThisComponent.getDrawPage()
oForm = oDraw.getForms().getByName(formRealName)
lineCnt = oForm.getbyname(listName).LineCount '全行数を取得。項目数ではなく、”全般”タブの”行数”のこと。表示される行数のこと。
selectedNum = oForm.getbyname(listName).SelectedItems(0) '選択された要素の番号を取得
If selectedNum = lineCnt - 1 Then
msgbox "何か選択してください。",,""
Exit Sub
End If
selectedStr = oForm.getbyname(listName).StringItemList(selectedNum) '文字列を取得
msgbox selectedStr & " が選択されました。"
End Sub
続けて、「リストボックスの扱い方(その2)」の記事もどうぞ。
( LibreOffice 6.2.4.2 / Linux Mint Debian Edition3(LMDE3)”Cindy” )