えくせるちゅんちゅん

ことりがエクセルをちゅんちゅんするブログ

VBEをカスタマイズしてコメントアウトを効率的に行う

こんばんちゅん。ことりちゅんです。(・8・)

突然ですが今日はVBAのコメントブロックについてです。

VBA(VBE)って標準設定ではコメントアウトのボタン(「編集」ツールバー)は隠されてるわ、コメントアウトにショートカットキーが使えないわで、とても不便なんですよね。

そんな貴方にコメントブロックに関して2種類の設定方法を紹介しましょう。

右クリックメニューにコメントブロックを追加する

右クリックメニューをカスタマイズするには、隠しコマンド?「ショートカットメニュー」のツールバーのチェックをONにする必要があります。

f:id:Kotori-ChunChun:20190222002801g:plain

残念ながら右クリックメニューに追加されただけで、アクセスキーが付与されておらず使い勝手は微妙です。

ちなみに、見ての通りVBEの窓ごとのコンテキストメニューの変更が出来ます。

コメントブロックにショートカットキーを割り当てる

なんとも不思議な仕様ですが、「テキスト表示」又は「イメージとテキスト」にすることで、Alt+?のショートカットキーが使えるようになります。(隠しコマンド・・・?)

既存のキーと競合すると使えないのでご注意を。いっその事使わないボタンのショートカットは消してしまいましょう。

f:id:Kotori-ChunChun:20190222005331g:plain

これで貴方もコメンテーターですね!(違

※ちなみにウィンドウが小さくなってツールバーの文字が見えない状態になると、やっぱりショートカットキーが働きません。謎すぎる~><

ちゅんのカスタマイズ

ちなみに右クリックメニューに追加したコメントブロックにもアクセスキーを付けることが出来ました!!!

私もこれを機に使わないコマンドを消し、よく使うコマンドを追加してみました。

f:id:Kotori-ChunChun:20190225234754p:plain

コンテキストメニューを一新

  • 右クリック→C:コメント
  • 右クリック→X:コメント解除
  • 右クリック→L:プロジェクトのコンパイル
  • 右クリック→R : カーソルの位置まで実行(Ctrl+F8)
  • 右クリック→V:コードを左右に並べる

更に標準のツールバーは消して、新規ツールバーを作成してショートカットキーを割り当て

  • Alt+Z:やり直し
  • Alt+1:コメント
  • Alt+2:コメント解除
  • Alt+R : リセット
  • Alt+C:プロジェクトのコンパイル
  • Alt+V : コードを左右に並べる
  • Alt+D : 定義(カーソルの位置の関数の定義された場所にジャンプ)
  • Alt+E : 元の位置(ジャンプする前の位置にジャンプ)
  • Alt+B/N/P/M : ブックマーク関連

尚、メニューバーはキーボードからアクセスすることは無いので、アクセスキーを全部消しました(・8・)

これは、かなり効率的が上がりそうです♪

おまけ:VBAコメントアウトについて

VBAには'(シングルクォーテーション)によるコメントアウトと、Remキーワードによるコメントアウトがあります。

プロい方々は二種類のコメントをルールを決めて使い分けをしているそうです。

という訳で両者の違いを調べてみました。

Rem ステートメント

'いきなりコメント
Remいきなりコメント '←コンパイルエラー

'プロシージャ外コメント
Rem プロシージャ外コメント

Sub Test_Comment_1()
    'プロシージャ内コメント
    Rem プロシージャ内コメント
    Debug.Print "a"
End Sub

Sub Test_Comment_2()
    Debug.Print "a" '行末コメント
    Debug.Print "a" Rem 行末コメント '←コンパイルエラー
End Sub

Sub Test_Comment_3()
    Debug.Print "a": 'マルチステートメントコメント
    Debug.Print "a": Rem マルチステートメントコメント
End Sub

Sub Test_Comment_4()
    '複数行 _
    コメント
    
    Rem 複数行 _
    コメント
End Sub

Sub Test_Comment_5()
    Debug.Print "a": 'マルチステートメント _
                    複数行コメント
    Debug.Print "a": Rem マルチステートメント _
                    複数行コメント
End Sub

Sub Test_Comment_6()
    If True Then 'コメント
        Debug.Print "a"
    End If

    If True Then Rem コメント コロン付けても同様の結果
        Debug.Print "a"
    End If       '← End If に対応するIfブロックがありません。
End Sub

という訳で、両者の違いはMicrosoftの説明通り、行末で使う場合はコロンが必要というくらいの差異しか見つかりませんでした。流石にRemとコメントの間にスペース付けない人はいないと思うのでデメリットとするまでもないですよね。

あと気になったのはIf~Thenの場合には、コロンを入れようが入れまいが使えないということですね。 こんなところにコメント入れる人はいないと思うので、まず問題ないと思いますが。

Remキーワードはツールバーのコメントブロック機能で操作することは出来ませんでした。つまり

誤コメント解除対策で使えるかもしれません。

おわりに

何故か今までショートカットキーの設定方法を知っているのに、コンテキストメニューで対応してたのですが、ショートカットを使ったほうが100倍便利なので、ショートカットキーを使ったコメントアウトに慣れようと思います。

今回の執筆で設定方法を見直した事により、コンテキストメニューにもアクセスキーを追加できるという発見がありました。他の方がコンパイルを追加しているのを見て、私も登録したくなりました。

とても良い勉強になったと思っています。

皆さんも好きなようにカスタマイズしてみて下さい。

以上、幸せなVBAライフを♪

プライバシーポリシー