2016-05-23 14 views
1

は、私はこのようなVBAマクロでボタンを無効にしたかったVBAエクセル無効ボタン

Set b1 = ActiveSheet.Buttons("Button 1") 
b1.Enabled = False 

そして、あまりにもこの:

Me.Shapes("Button 1").ControlFormat.Enabled = False 

なしそれらの作品は動作します。エラーメッセージが表示されないので、コードが完全に実行されるので、私のボタン名は正しいです。

私の問題は、このスクリプトの後、私はそのボタンをクリックすることができ、割り当てられたマクロは完全に実行されているということです。

私の目標は、ボタンを無効にした後、クリックしても何も起こりません。

タンクス!

+0

シート「テストシート」内のプライベートサブWorksheet_Activate()内に常駐することができますExcel 2010では、使用しているバージョンがありますか?このページでは、試してみることができるいくつかの提案があります。そのうちの1つが動作していれば教えてください:http://answers.microsoft.com/en-us/office/f oracle/officeversion_other-customize/excel-2010-enabledisable-buttons-vba/793de6e3-6c20-4706-876d-1421209aad98?auth = 1 – Sun

+0

私はオフィス2013を使用しています。スレッドを見ましたが、解決策はそれほど最適ではありません。 .. – Twi

+0

@Sunありがとう!私はオフィス2013を使用しています。スレッドを見ましたが、ソリューションはあまり最適ではありません。 – Twi

答えて

0

フォームボタンを無効にする(ではありませんここでActiveXを話す)は、割り当てられたマクロの実行を妨げず、ボタンをグレーアウトしません。以下のコードは、Excelから取得したバージョンに基づいています。フォームボタンに名前を割り当てなかった場合は、ボタン(1)を使用することもできます。

Excelバージョン= 16以上の場合、ボタンは黒にしてマクロを割り当てることで「有効」になります。ボタンは、それが灰色作り、それに何のアクションを割り当てないことで「無効」である。

コードは、例えば、私はバグがあることを読んだことがある

If Application.Version < 16 Then 

    Worksheets("Test Sheet").Buttons("button_name").Font.Color = 8421504 
    Worksheets("Test Sheet").Buttons("button_name").OnAction = "" 

Else 

    Worksheets("Test Sheet").Buttons("button_name").Font.Color = 0 
    Worksheets("Test Sheet").Buttons("button_name").OnAction = "'Name of the workbook.xlsm'!my_macro_name" 

End If 
0

ActiveXボタンを使用している可能性があります。これを試してみてください:

Sheets("Sheet1").CommandButton1.Enabled = False '--->change sheet name as required 


EDITを:フォームコントロールボタンの ______________________________________________________________________________

ActiveSheet.Shapes("Button 1").ControlFormat.Enabled = False 

が無効に次の行ボタンすなわちクリックイベント動作しなくなりますが、ボタンの外観はcではありませんボタンがまだアクティブであるという印象を与えるハンゲ。だから、そのために回避、次のようにボタンのテキストの色を変更することです:

Sub disable_button_2() 
    Dim myshape As Shape: Set myshape = ThisWorkbook.Worksheets("Sheet1").Shapes("Button 2") 
    With myshape 
     .ControlFormat.Enabled = False '---> Disable the button 
     .TextFrame.Characters.Font.ColorIndex = 15 '---> Grey out button label 
    End With 
End Sub 

を元の状態の書き込みにボタンを戻すために:

Sub activate_button_2() 
    Dim myshape As Shape: Set myshape = ThisWorkbook.Worksheets("Sheet1").Shapes("Button 2") 
    With myshape 
     .ControlFormat.Enabled = True '---> Enable the button 
     .TextFrame.Characters.Font.ColorIndex = 1 '---> Highlight button label 
    End With 
End Sub 
+0

いいえ、フォームコントロールを使用しています。 – Twi

+0

@Twi - 次に 'ActiveSheet.Shapes( "Button 1")。ControlFormat.Enabled = true – Mrig

+0

@Twi - あなたのファイルを共有することができれば、それを調べることができます。 – Mrig