如何使用For下一循环在Sheet1上循环通过CommandButton

时间:2019-04-09 16:02:27

标签: excel vba

所以我想根据工作表3中的A1到D1字符串设置命令按钮上的标题

Dim buttonname as String
Dim i as Integer

For i = 1 to 5 
buttonname = "Commandbutton" & i

buttonname.Caption = Worksheets(sheet3).Cells(1,i)

Next

该代码似乎无法正常工作,需要使用Controls,但是当我尝试使用Controls时,我无法将其设置为更改命令按钮

2 个答案:

答案 0 :(得分:1)

buttonname是一个字符串,而不是一个对象。您首先需要找到对象,然后更改标题/文本

但是,这取决于您使用的是窗体控件还是ActiveX控件:

'ActiveX Control
Worksheets("sheet3").OLEObjects(i).Object.Caption = buttonname
'Form Control
Worksheets("sheet3").Shapes(i).OLEFormat.Object.text

答案 1 :(得分:0)

这是一种方法,在工作表中循环所有形状,检查按钮,重命名。

Sub listButtons()
    Dim shp As Shape
    Dim row As Long
    For Each shp In ThisWorkbook.Sheets("Sheet1").Shapes
        If shp.Name Like "Button*" Then
            row = row + 1
            shp.OLEFormat.Object.Text = Range("A" & row).Value
        End If
        'Select Case as an Alternative to the If approach
        Select Case shp.Name
            Case "Button 2"
                shp.OLEFormat.Object.Text = ThisWorkbook.Sheets("Sheet1").Range("A2").Value
            Case "Button 3"
                shp.OLEFormat.Object.Text = ThisWorkbook.Sheets("Sheet1").Range("A3").Value
            Case Else
                'Do nothing if not Button 2 or 3
        End Select
    Next
End Sub