OpenOffice でマクロを起動するボタンがあります。マクロ内で、ボタンの名前を変更したい。Excelの元のコードは
ActiveSheet.Shapes("PunchButton").select
Selection.Characters.Text = "Punch In"
しかし、最初の行は何もしません。OpenOffice でシートを確認しましたが、ボタンの名前は正しいです。どうすればそれにたどり着くことができますか?
OpenOffice でマクロを起動するボタンがあります。マクロ内で、ボタンの名前を変更したい。Excelの元のコードは
ActiveSheet.Shapes("PunchButton").select
Selection.Characters.Text = "Punch In"
しかし、最初の行は何もしません。OpenOffice でシートを確認しましたが、ボタンの名前は正しいです。どうすればそれにたどり着くことができますか?
ここには、必要なボタン以外のすべてのボタンのラベルと状態を変更する方法を示すコード スニペットがあります。
Sub clickCommandButton1
oPage = Thiscomponent.Sheets.getByName("Sheet1").getDrawPage
iCount = oPage.getCount
For i = 0 to iCount - 1
oEle = oPage.getByIndex(i)
oControl = oEle.getControl()
If oControl.DefaultControl = "com.sun.star.form.control.CommandButton" Then
' Found command button - change label of other buttons '
If oEle.Name <> "CommandButton1" Then
oControl.Label = "Inactive"
oControl.Enabled = False
End If
End If
Next
End Sub
これを変更して、すべてのボタンを反復処理しますが、内部の if ステートメントを「<>」ではなく「=」に変更します (不要な場合は無効化を削除します)。
Pax のおかげで、これが私の作業コードです。どれほど堅牢かはわかりませんが、問題のシートでは機能します。ありがとう、パックス。
sub testThis
setButtonLabel("PunchButton", "hello")
setButtonLabel("ReportButton", "hello")
end sub
sub setButtonLabel(controlName, label)
oPage = ThisComponent.CurrentController.ActiveSheet.getDrawPage
iCount = oPage.getCount
For i = 0 to iCount - 1
oControl = oPage.getByIndex(i).getControl
If oControl.Name = controlName Then
oControl.label = label
exit sub
End If
Next
end sub