我在这个宏中放了几个按钮,一切都很好看,看起来不错,但我对代码有疑问。正如您在下面的代码片段中所示,在使用With Activesheet
时,代码会使用.Shapes
AND .BUTTONS
。看起来.Shapes
更多地与放置按钮后调整大小有关?而.BUTTONS
更多地与它的外观及其作用有关?
我只是想知道它们之间的区别是什么,因为我一度使用.BUTTONS
添加按钮,然后我使用.shapes
来改变按钮的大小。但是,我使用.Shapes
告诉它在点击而不是OnAction
时该做什么.BUTTONS
。这些属性的区别究竟是什么? (或者其他所谓的我不确定)它们似乎有点交织在一起,我不太确定使用哪个以及何时使用。
With Activesheet
.BUTTONS.Add(53.25, 36.75, 190.5, 41.25).Select
.Shapes("Button 6").IncrementLeft 222.75
.Shapes("Button 6").IncrementTop 147
.BUTTONS("Button 6").Text = "Mexmo MFG"
.BUTTONS("Button 10").Text = "10"
.BUTTONS("Button 10").name = "Button 10"
.BUTTONS("Button 11").Text = "11"
.BUTTONS("Button 11").name = "Button 11"
.BUTTONS("Button 12").Text = "12"
.BUTTONS("Button 12").name = "Button 12"
.Shapes("Atlanta MFG").OnAction = "Atlanta"
.Shapes("Denver MFG").OnAction = "Denver"
.Shapes("Jackson MFG").OnAction = "Jackson"
.Shapes("Louisville MFG").OnAction = "Louisville"
End With
答案 0 :(得分:4)
某些属性仅可用,只能使用Shape
对象进行调整。这就是您的代码拥有Buttons
和Shapes
个集合的原因。
从Shapes
继承的大多数对象通常会公开返回Shape对象的ShapeRange
属性。您只需使用它并访问所有相关属性即可。
示例:
Sub test()
With ActiveSheet
.Buttons.Add(53.25, 36.75, 190.5, 41.25).Select
.Shapes("Button 6").IncrementLeft 222.75
'/ This works same as Shapes("Button 6")
.Buttons("Button 6").ShapeRange.IncrementTop 147
.Shapes("Button 6").IncrementTop 147
End With
End Sub
答案 1 :(得分:0)
扩展@ cyoashu的回答,值得注意的是.Buttons.Add()
方法返回添加的按钮,因此您可以直接在{{1阻止:
With
...这使您无需了解刚刚添加按钮的名称。