【发布时间】:2016-04-14 11:39:22
【问题描述】:
我有一个创建命令按钮的宏,但是我无法将任何宏分配给 VBA 中的按钮
查看了this 链接,但它是一个用户表单(但我还不够好,无法更改它以适应我的需要)
我目前正在处理的代码如下,我猜我需要在With 语句中添加一些内容,但我不知道会是什么
Dim MyR As Range, MyB As OLEObject
Dim MyR_T As Long, MyR_L As Long
Set MyR = Range("I3") 'just an example - you get that from your own script
MyR_T = MyR.Top 'capture positions
MyR_L = MyR.Left '...
'create button
Set MyB = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False)
'set main button properties
With MyB
.Name = "MyPrecodedButton" 'important - code must exist ... see below
.Object.Caption = "Load UseForm"
.Top = MyR_T
.Left = MyR_L
.Width = 130
.Height = 30
.Placement = xlMoveAndSize
.PrintObject = True 'or false as per your taste
End With
【问题讨论】:
-
实际上知道为什么需要动态按钮会很有趣,也许最好有一个列表框和一个按钮。但我只是古玩,我不想质疑你的设计;)
-
@Doktor OSwaldo ,我不介意它是否受到质疑,如果有其他方法可以做到这一点,我会调查它,但我需要动态按钮的原因是(这里的人是 [侮辱])所以当创建新数据集时,会有一个供人们立即使用的按钮,我们的许多 Excel 文档都有 50 多张。我已经能够使用表单按钮来做到这一点,但是众所周知这里的人会破坏宏
-
你有没有想过用鼠标选择移动一个按钮,或者我做了什么,例如鼠标双击处理程序?
-
无权访问计算机 atm,如果您可以创建按钮数组,则该按钮的索引将传递给事件处理程序。因此,您可以从同一个事件处理程序中唯一标识每个按钮