2016-09-13 18 views
0

彼らがExcel 2013でクリックされた後、私はボタンを無効にしたい無効にすべてのボタン

私のコードは正常に動作しますが、ただ一つの特定のボタンの。

シート内のすべてのボタンに同じロジックを適用するにはどうすればよいですか?

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

Googleはシート上のすべてのコントロールをループします。あなたが実際に望んでいるもので質問を言い換えると、必要なものをGoogleに洞察することができます。あなたは、どのようにシート上のコントロールをループするかどうかを尋ねています。ボタンのクリックを無効にするのではなく、何らかの努力も必要です。 –

答えて

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 

を無効に各ボタンには、それ自体が無効になり これは(ボタンを含むすべてのフォームコントロールを非表示にする...

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

ありがとうたくさんの男!私の不明な質問を申し訳ありません。私はたくさんのボタンを持っていて、各ボタン自体を無効にしたいのですが、 彼の名前がbutton1、button2なのかどうかは関係ありません。 – 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 
関連する問題