コマンド バー オプションの一部をブロックしたいのですが、現在使用している方法では制限が厳しすぎます。私は現在このコードを使用しています:
Sub Auto_Open()
Application.CommandBars.FindControl(ID:=847).Enabled = False
End Sub
Sub Auto_Close()
Application.CommandBars.FindControl(ID:=847).Enabled = True
End Sub
これに関する問題は、このコードを含むワークブックが開いたままになっている限り、他のワークブックが無効化されたコントロールを使用できないことです。解決策は次を使用することだと思います:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Application.CommandBars.FindControl(ID:=847).Enabled = False
End Sub
これにより、ユーザーがシートを削除するために右クリックしたときに、無効になったコントロールを使用できなくなります。
クリックするとすぐにこれらの空白を削除する方法が必要になりました。これにより、開いている可能性のある他のワークブックでコントロールを使用できるようになります。コードを 10 秒ごとに実行するほど一般的ではない、これに使用できるイベントはありますか? また、vba の遅延を使用して、前のコードから 5 秒後にコードを実行できるかどうかも疑問に思いました。