我在VBA宏中看到了很多关于创建形状和按钮的不同页面,但它们都没有用,我感到非常沮丧。
我试图使用:
Dim sortBtn As Object
Set sortBtn = Worksheets("Main").OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=200, Top:=100, Width:= 100, Height:=35)
sortBtn.Name = "Test" 'So far this works
Worksheets("Main").Shapes(Test).DrawingObject.Object.Caption = "Test2"
'The above line doesn't work
请不要将我重定向到另一个问题,我已经在这个网站上阅读了十几个,没有人比这更进一步帮助我了。有了这个,我还想选择按钮的放置位置。我也试过了形状方法:
Dim sortBtn As Shape
Set sortBtn = Worksheets("Main").Shapes.AppShape(CommandButton1)
我也尝试过:
With sortBtn.OLEFormat.Object
.Object.Caption = "Test"
.Name = "Test"
End With
以上也不适用于上面使用的声明。
请救我排除故障!
答案 0 :(得分:0)
这个答案也许为时已晚,但我使用以下代码存档了预期的结果:
Call Add_Command_Button(Range("R39:S40"), "Next01_Button", "Next")
Sub Add_Command_Button(rngUbicacionControl As Range, sCommandButtonName As String, sCommandButtonCaption As String)
Dim objCommandButton As Object
Set objCommandButton = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, _
DisplayAsIcon:=False, _
left:=rngUbicacionControl.left, _
top:=rngUbicacionControl.top, _
width:=rngUbicacionControl.width, _
height:=rngUbicacionControl.height)
objCommandButton.Name = sCommandButtonName
objCommandButton.Object.Caption = sCommandButtonCaption
End Sub
答案 1 :(得分:0)
使用集成的Macro Recorder,似乎您可以通过另一种方法解决此问题。
这是完整的宏
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.Buttons.Add(111.75, 60.75, 258, 75.75).Select
Selection.OnAction = "WhatEverMacroYouNeedtoRunWhenYouClickOnThisButton"
Selection.Characters.Text = "Test 2"
With Selection.Characters(Start:=1, Length:=13).Font
.Name = "Calibri"
.FontStyle = "Regular"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
End Sub
如果看这段代码,您会发现它实际上不是同一类型的对象。您的是OLEobject
,这个是Button
。但是,我很难找到有关该对象的文档...因此,如果此类对象对于您的应用程序是否足够,我无法真正说出要做什么。
因此,如果我们将其应用于您的代码,则会得到:
Public Sub InsertButton()
Dim sortBtn As Object
Set sortBtn = ThisWorkbook.Worksheets("Main").Buttons.Add(Left:=200, _
Top:=100, Width:=100, Height:=35)
sortBtn.Name = "Test"
sortBtn.Caption = "Test 2" '<---This one works.
sortBtn.Characters.Text = sortBtn.Characters.Text & vbCrLf & "Test 3" <-- This one works too!
End Sub