Это не ясно из вашего вопроса, хотите ли вы, нажав кнопку Button1, чтобы «отключить» все элементы управления на листе, или вы хотите каждый кнопка, чтобы отключить себя.
Button1 отключает все элементы управления
Sub Button1_Click
Dim shp As Shape
For Each shp In Sheet1.Shapes
With shp
If .Type = msoFormControl Then
.OnAction = ""
.DrawingObject.Font.ColorIndex = 16
End If
End With
Next shp
End Sub
Каждая кнопка отключает сама Используйте процедуру Disabler помощника общего кнопка ...
Sub Button1_Click()
DisableButton Sheet1, "Button 1"
End Sub
Sub Button2_Click()
DisableButton Sheet1, "Button 2"
End Sub
Sub DisableButton(hostSheet As Worksheet, shapeName As String)
Dim shp As Shape
On Error Resume Next
Set shp = hostSheet.Shapes(shapeName)
On Error GoTo 0
If Not shp Is Nothing Then
With shp
If .Type = msoFormControl Then
.OnAction = ""
.DrawingObject.Font.ColorIndex = 16
End If
End With
End If
End Sub
Google loop все элементы управления на листе. Часто перефразируя вопрос с тем, что вы на самом деле хотите, вы получите представление о том, что вам нужно. Вы спрашиваете: «Как перемещать элементы управления на листе excel vba», а не «Отключить нажатия кнопок», вам также нужно показать некоторые усилия. –