Итак, я хочу установить заголовок для командных кнопок в соответствии со строками от 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
Похоже, этот код не работает, должен быть элемент управления, но когда я пытался использовать элементы управления, я не могу настроить его для изменения командных кнопок.
buttonname
— это строка, а не объект. Сначала нужно найти Объект, а затем изменить Заголовок/Текст
Однако это будет зависеть от того, используете ли вы элемент управления формы или элемент управления ActiveX:
'ActiveX Control
Worksheets("sheet3").OLEObjects(i).Object.Caption = buttonname
'Form Control
Worksheets("sheet3").Shapes(i).OLEFormat.Object.text
@jure Попробуйте Worksheets("sheet3").OLEObjects(buttonname).Object.Caption = Worksheets(sheet3).Cells(1,i).Value
установить заголовок OLEObject
с именем, хранящимся в buttonanme
, на значение, хранящееся в строке i
, столбце 1.
Это один из многих способов: зациклить все фигуры на листе, проверить наличие кнопок, переименовать.
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 и так далее.
shp.Name
даст вам имя кнопки, обычно Button 2 будет CommandButton2 и так далее. Таким образом, вы можете сделать Select Case
вместо If
Честно говоря, я этого не понимаю? Должен ли я изменить имя кнопки на объект? И я использую элемент управления ActiveX