在Excel 2010中,使用VBA代码创建宏调用按钮。
注意:这实际上是一个关于在何处找到对象类型的文档支持的问题,而不是编码事物。
所以...在宏录音机上工作,我得到了这个(假设我想把单元格M8变成一个按钮):
Sub MakeMyButton()
' Some basic definitions
StarterRow = 8
MyLeft = Cells(StarterRow, "M").Left
MyTop = Cells(StarterRow, "M").Top
MyHeight = Cells(StarterRow, "M").Height
MyWidth = Cells(StarterRow, "M").Width
' Now comes the creation bit
ActiveSheet.Buttons.Add(MyLeft, MyTop, MyWidth, MyHeight).Select
With Selection
.AltText = "View"
.OnAction = "afRoomText"
' .Value = xlOff
' .LinkedCell = "M" & StarterRow
' .Display3DShading = True
End With
End Sub
问题是,当然,.Value和.LinkedCell以及.Display3DShading(此处标记为备注)对Buttons.Add无效 - 足够公平。但我似乎找不到一个对这个对象有效的综合列表!谁知道在哪里看?
(顺便说一下,为什么唱片宏观事物会使用诸如" CheckBoxes.Add&#34之类的东西?这些在Excel VBA中没有任何明显的记录?如果你去寻找" CheckBoxes&# 34;在文档中,你会发现很多切线的评论,但是没有实际的信息,好像这是不恰当的代码,恰好是自动使用....)
答案 0 :(得分:2)
始终使用Dim
声明所有变量。对于对象(例如Button
),这将使您可以访问自动完成。例如:
Dim b As Button ' Aha!
Set b = ActiveSheet.Buttons.Add(324, 102, 108, 51)
创建按钮的另一种方法:
Dim but As Shape
Dim sh As Worksheet
Set sh = ActiveSheet
Set but = sh.Shapes.AddFormControl(xlButtonControl, 100, 100, 100, 100)
With but
.AlternativeText = "View"
.OnAction = "afRoomText"
With .TextFrame
.Characters.Text = "Press Me"
.Characters.Font.Color = RGB(255, 50, 50)
End With
End With