目次:
ビデオ: Excel起動とタスクバー設定方法 2024
Excel 2007より前のVBAプログラマは、カスタムメニュー、カスタムツールバー、およびカスタムショートカット(右クリック)メニューの作成にCommandBarオブジェクトを使用しました。 Excel 2007以降、CommandBarオブジェクトはかなり奇妙な位置にあります。メニューやツールバーをカスタマイズするためのコードを記述すると、Excelはそのコードをインターセプトし、多くのコマンドを無視します。
Excel 2007は、よく考えられたインターフェイスの拡張機能を表示するのではなく、カスタマイズされたメニューとツールバーをアドインと呼ばれるキャッチオールリボンタブにダンプします。
<! - 1 - >メニューとツールバーのカスタマイズは、アドイン→メニューコマンドまたはアドイン→カスタムツールバーのグループになります。しかし、CommandBarオブジェクトを使用するショートカットメニューをカスタマイズすることは、常にそうであるように機能します。
結論? CommandBarオブジェクトはそれほど有用ではありませんが、ショートカットメニューをカスタマイズする唯一の方法です。
セルのショートカットメニューに新しい項目を追加する
<! - 2 - >以下は、セルを右クリックすると表示されるショートカットメニューに新しい項目を追加するサンプルコードです。これらの例をあなたのニーズに合わせることができるはずです。
セルのショートカットメニューから使用可能にすることで、ケース変更ユーティリティを少し強化することができます。
AddToShortcutプロシージャは、セルのショートカットメニューに新しいメニュー項目を追加します。 NewControlという名前のオブジェクトのCaptionプロパティとOnActionプロパティを変更することで、独自のマクロをポイントするように変更することができます。
<! - 3 - >Sub AddToShortCut()Dim BarをCommandBar Dim NewControlとしてCommandBarButton DeleteFromShortcut Set Bar =アプリケーション。 CommandBars( "Cell")NewControl = Barを設定します。コントロール。 NewControlで_(型:= msoControlButton、ID:= 1、_一時:= True)を追加します。 Caption = "&Caseを変更する"。 OnAction = "ChangeCase"。 Style = msoButtonIconAndCaption End With End Sub
ショートカットメニューを変更すると、その変更はExcelを再起動するまで有効です。つまり、VBAコードを含むブックを閉じると、変更されたショートカットメニューがリセットされません。したがって、ショートカットメニューを変更するコードを記述すると、ほとんどの場合、変更の効果を逆転させるコードが記述されます。
DeleteFromShortcutプロシージャは、セルのショートカットメニューから新しいメニュー項目を削除します。
Sub DeleteFromShortcut()エラー時に次のアプリケーションを再開します。 CommandBars( "セル")。コントロール_(「ケースの変更」) Delete End Sub
セルを右クリックした後に新しいメニュー項目がどのように表示されるかを示します。
セルのショートカットメニュー:カスタムメニュー項目:大文字/小文字の区別を表示します。いくつかの変数を宣言した後の最初の実際のコマンドは、DeleteFromShortcutプロシージャを呼び出します。このステートメントは、ショートカットの[セル]メニューに[ケースの変更]メニューアイテムが1つだけ表示されるようにします。その行をコメントアウトしてください(行頭にアポストロフィを置いてください)。そして手続きを数回実行してください。
セルを右クリックすると、Change Caseメニュー項目のインスタンスが複数表示されます。 DeleteFromShortcutを複数回(余分なメニュー項目ごとに1回)実行すると、すべての項目を取り除くことができます。
最後に、ワークブックを開いたときにショートカットメニュー項目を追加し、ワークブックを閉じたときにメニュー項目を削除する方法が必要です。これは簡単です。
Private Sub Workbook_Open()呼び出しAddToShortCut End Sub Private Sub Workbook_BeforeClose(Booleanとしてキャンセル)呼び出しDeleteFromShortcut End Sub
Workbook_Openプロシージャは、ブックが開かれたときに実行され、ワークブックが閉じられる前にWorkbook_BeforeCloseプロシージャが実行されます。医者が注文したものだけ。
Excel 2013とExcel 2016の違いは何ですか?
VBAを使用してExcel 2007以前のショートカットメニューを使用していた場合は、大幅な変更を認識する必要があります。
以前は、コードがショートカットメニューを変更した場合、その変更はすべてのワークブックに有効でした。たとえば、セルの右クリックメニューに新しい項目を追加した場合、 任意の ブック(後で開く他のブック)でセルを右クリックしたときにその新しい項目が表示されます。つまり、 アプリケーション レベルでショートカットメニューの変更が行われました。
Excel 2013とExcel 2016は単一のドキュメントインターフェイスを使用し、ショートカットメニューに影響します。ショートカットメニューの変更は、アクティブなブックウィンドウにのみ影響します。ショートカットメニューを変更するコードを実行すると、アクティブなウィンドウ以外のウィンドウのショートカットメニューは変更されません。これは、物事がどのように働いていたかとは根本的に異なります。別のひねり:アクティブなウィンドウに変更されたショートカットメニューが表示されたときにユーザーがブックを開く(または新しいブックを作成する)と、新しいブックにも変更されたショートカットメニューが表示されます。つまり、新しいウィンドウは、新しいウィンドウが開いたときにアクティブだったウィンドウと同じショートカットメニューを表示します。
結論:これまで、ショートカットメニューを変更したブックまたはアドインを開いた場合、変更されたショートカットメニューがすべてのブックで使用できるようになりました。あなたはもはやその保証を持っていません。