テキストボックスに入力された値の取得について。
下図のようなフォーム「Dialog1」を用意する。二つのテキストボックス名は
それぞれTextbox1、Textbox2 とする :
Textbox1 に値を入力し、コマンドボタンをクリックすると、先ずTextbox1
の値をメッセージボックスに表示し、続いて、Textbox2 に「Hello, World!」
の文字列を代入、という処理を例に、以下説明を行う。
エクセル VBA と比べると、テキストボックスに限らず、Calc のコントロール
を扱うコードは煩雑である。一般にフォーム上のコントロールを扱う為には
Control 変数 = Form 変数.getControl(Control 名)
Control 変数.Property 名
Control 変数.Method 名
と、いちいち変数を宣言しなければならない。エクセル VBAの場合、
Me.Control 名.Property 名
Me.Control 名.Method 名
で済むのに比べると、ややこしい。テキストボックスの値の代入・取得に
ついては、
Textbox 変数 = Form 変数.getControl(Textbox 名)
文字列変数 = Textbox 変数.Text
Textbox 変数.Text = 文字列
という具合にコードを記述していく。
以下に、サンプルコードを記述する。当該コードには、「Dialog1」を開く
プロシージャも、全て一つのモジュールの中に記述している。エクセル
の「Me」のような便利なモノがないので、Form 変数を複数のプロシージャ
や関数で使用する場合は、同一モジュール内にコードを記述するのが
最適と判断した為、一つのモジュールにまとめた。他にもっと良いやり方
があるのかも知れないが、思いつかなかった。
以下、モジュール :
Private mobjDialog1 As Object
Sub Main
'
'Dialog1を開く
DialogLibraries.LoadLibrary("Standard")
mobjDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
mobjDialog1.execute()
End Sub
Sub CommandButton1Click()
Dim objTextbox1 As Object
Dim objTextbox2 As Object
objTextbox1 = mobjDialog1.getControl("Textbox1")
'
'Textbox1 に入力された値をメッセージボックスに表示
Msgbox("Textbox1に入力された値は「" & objTextbox1.Text & "」")
'
'Textbox2 に「Hello, World!」を代入する。
objTextbox2 = mobjDialog1.getControl("Textbox2")
objTextbox2.Text = "Hello, World!"
End Sub
処理の結果、表示されるメッセージボックスと、処理後のフォームの状態
は下図の通り :
0 件のコメント:
コメントを投稿