2009-02-26 5 views
0

Ich habe eine Schaltfläche, die ein Makro in OpenOffice startet. Innerhalb des Makros möchte ich den Namen der Schaltfläche ändern. Der ursprüngliche Code für Excel istWie adressiere ich eine Schaltfläche? (OpenOffice Spreadsheet Macros)

ActiveSheet.Shapes("PunchButton").select 
    Selection.Characters.Text = "Punch In" 

aber die erste Zeile tut nichts. Ich habe das Blatt in OpenOffice überprüft und die Schaltfläche hat den richtigen Namen. Wie komme ich dazu?

Antwort

1

Es gibt ein Codeschnipsel here, das zeigt, wie Sie die Beschriftung und den Status aller Tasten außer der gewünschten ändern können.

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 

Ich würde dies ändern, alle Tasten iterieren aber die interne if-Anweisung ändern zu ‚=“ statt ‚<>‘ (und das Sperren entfernen, wenn das nicht gebraucht wird).

+0

Wunderbar, danke. ich werde es ausprobieren und meinen Code schreiben wenn es funktioniert. –

0

Dank zu Pax, hier ist mein Arbeits Code. Nicht sicher, wie robust es ist, aber für das Blatt in Frage es funktioniert. nochmals vielen Dank, 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 
Verwandte Themen