在以编程方式创建的按钮上执行子函数

时间:2018-04-04 08:07:25

标签: vba libreoffice openoffice-calc

对于VBA来说,这是一个新手。我的问题是:

我单击另一个按钮时创建一个按钮:创建按钮创建如下:

Set t = ActiveSheet.Range(Cells(i +6, 4), Cells(i+6, 5)) '+6 to start at cell 6
    Set buttons =   ActiveSheet.Buttons.Add(t.Left, t.Top , t.Width, t.Height)
        With buttons
            .OnAction = ""  
            .Caption = "Add TestCase to  " & sReturn
            .Name = "Btn" & i

        End With

我希望在“OnAction”中有一个功能。但我只是不工作,我收到“语法错误”。基本上我只想在一个按钮上执行一个函数,该按钮是以编程方式创建的。我也看了几个论坛来解决这个问题但没有任何效果,我认为因为这是libreoffice 编辑:解决方案在Excel中不在Libreoffice中工作

3 个答案:

答案 0 :(得分:1)

对于Excel:

使用here中的直接示例:

Sub test()

    Dim t As Range
    Dim Buttons As Object

    Set t = ActiveSheet.Range(Cells(i + 6, 4), Cells(i + 6, 5)) '+6 to start at cell 6
    Set Buttons = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)

    With Buttons
        .OnAction = "'Btn3 ""Hello"", 123'"
        .Caption = "Add TestCase to  " & sReturn
        .Name = "Btn" & i

    End With

End Sub

Sub Btn3(strString As String, iInt As Integer)
    MsgBox "String = " & strString & vbNewLine & "Integer = " & iInt
End Sub

警告:

无法在Office Libre上进行测试。这可能是不受支持的功能。

答案 1 :(得分:0)

如下

    With ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
        .OnAction = "MyMacro" ' change "MyMacro" to your actual macro name
        .Caption = "Add TestCase to  " & sReturn
        .Name = "Btn" & i
    End With

我使用以下宏附加对该按钮进行了测试:

Sub MyMacro()
    MsgBox "HellO"
End Sub

答案 2 :(得分:0)

  

我对VBA很新...解决方案在Excel中工作而不是在Libreoffice中。

如此新鲜,你甚至不知道使用什么语言!出于某种原因,这似乎是一种常见的误解。 Microsoft Excel使用VBA。  对于LibreOffice,请写入LibreOffice Basic

创建按钮的完整示例代码位于https://forum.openoffice.org/en/forum/viewtopic.php?t=27424

开始学习Basic的好地方是http://www.pitonyak.org/oo.php