2016-09-13 3 views
0

Я хочу отключить кнопки после их нажатия в Excel 2013.Отключить все кнопки в листе Excel

Мой код работает нормально, но только для одной конкретной кнопки.

Как применить одну и ту же логику ко всем кнопкам в листе?

ActiveSheet.Shapes("Button 1").OnAction = Empty 
ActiveSheet.Shapes("Button 1").DrawingObject.Font.ColorIndex = 16 
+1

Google loop все элементы управления на листе. Часто перефразируя вопрос с тем, что вы на самом деле хотите, вы получите представление о том, что вам нужно. Вы спрашиваете: «Как перемещать элементы управления на листе excel vba», а не «Отключить нажатия кнопок», вам также нужно показать некоторые усилия. –

ответ

0

Я думаю, это то, что вы ищете:

Sub Answer() 
dim sh as shape 
For Each Sh In ActiveSheet.Shapes 
    Sh.OnAction = Empty 
    Sh.DrawingObject.Font.ColorIndex = 16 
Next 
End Sub 
+0

Большое спасибо за вашу помощь! – user3434521

2

Это не ясно из вашего вопроса, хотите ли вы, нажав кнопку 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 
+0

Спасибо большое! Извините за мой неясный вопрос. У меня много кнопок, и я хочу отключить каждую кнопку, не имеет значения, если его имя - кнопка1, кнопка2 и т. Д. – user3434521

0

Это должно скрыть все управление формы (в том числе кнопки) на листе.

Dim ws_export As Worksheet 
Dim shp_hide As Shape 

For Each shp_hide In ws_export.Shapes 
    If shp_hide.Type = msoFormControl Then shp_hide.Visible = FALSE 

Next shp_hide 
Смежные вопросы