Как перебрать CommandButton на Sheet1 с циклом For next

Итак, я хочу установить заголовок для командных кнопок в соответствии со строками от A1 до D1 на листе 3.

Dim buttonname as String
Dim i as Integer

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

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

Next

Похоже, этот код не работает, должен быть элемент управления, но когда я пытался использовать элементы управления, я не могу настроить его для изменения командных кнопок.

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
552
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

buttonname — это строка, а не объект. Сначала нужно найти Объект, а затем изменить Заголовок/Текст

Однако это будет зависеть от того, используете ли вы элемент управления формы или элемент управления ActiveX:

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

Честно говоря, я этого не понимаю? Должен ли я изменить имя кнопки на объект? И я использую элемент управления ActiveX

jure 10.04.2019 10:22

@jure Попробуйте Worksheets("sheet3").OLEObjects(buttonname).Object.Caption = Worksheets(sheet3).Cells(1,i).Value установить заголовок OLEObject с именем, хранящимся в buttonanme, на значение, хранящееся в строке i, столбце 1.

Chronocidal 10.04.2019 10:56

Это один из многих способов: зациклить все фигуры на листе, проверить наличие кнопок, переименовать.

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

Как я узнаю, что я нахожусь на ведьминской кнопке. Я хочу адресовать CommandButton2 из A2 и так далее.

jure 10.04.2019 10:26
shp.Name даст вам имя кнопки, обычно Button 2 будет CommandButton2 и так далее. Таким образом, вы можете сделать Select Case вместо If
Ricardo A 10.04.2019 16:27

Другие вопросы по теме