在以编程方式创建的按钮上执行子功能
Execute a sub Function on a button which is created programatically
我是 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" 中有一个函数。但我就是不工作,我收到 "Syntax Error"。基本上我只想在单击以编程方式创建的按钮时执行一个函数。我还查看了几个论坛来解决这个问题,但没有任何效果,我认为是因为它是 libreoffice。
编辑:解决方案适用于 Excel 而不是 Libreoffice
如下去
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
对于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 上进行测试。这可能是不受支持的功能。
im rather new to VBA... the solutions work in Excel not in Libreoffice.
新到连用什么语言都不知道!出于某种原因,这似乎是一个普遍的误解。微软 Excel 使用 VBA。
对于 LibreOffice,写入 LibreOffice Basic.
创建按钮的完整示例代码位于 https://forum.openoffice.org/en/forum/viewtopic.php?t=27424。
开始学习 Basic 的好地方是 http://www.pitonyak.org/oo.php。
我是 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" 中有一个函数。但我就是不工作,我收到 "Syntax Error"。基本上我只想在单击以编程方式创建的按钮时执行一个函数。我还查看了几个论坛来解决这个问题,但没有任何效果,我认为是因为它是 libreoffice。
编辑:解决方案适用于 Excel 而不是 Libreoffice
如下去
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
对于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 上进行测试。这可能是不受支持的功能。
im rather new to VBA... the solutions work in Excel not in Libreoffice.
新到连用什么语言都不知道!出于某种原因,这似乎是一个普遍的误解。微软 Excel 使用 VBA。 对于 LibreOffice,写入 LibreOffice Basic.
创建按钮的完整示例代码位于 https://forum.openoffice.org/en/forum/viewtopic.php?t=27424。
开始学习 Basic 的好地方是 http://www.pitonyak.org/oo.php。