ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

右クリックメニューに、セルの結合/解除を追加する方法(for Excel)

会社で仕事って言うと、Excel/Word/PowerPointなどのOffice製品は必須なんですよね。
でまぁ、業務中に これらを扱う時間て結構多い訳。
となると、(嫌がる人も世の中にはいるらしいけど)ある程度習熟しないと、仕事が効率化できない訳。


例えば、以下のようなケース。

  1. Excelを開く
  2. キーボードからポチポチ入力
  3. マウスに手を延ばして、書式設定 ふにふに
  4. 2に戻る

…一々 キーボードから手を離してマウスに持っていくのが面倒なんじゃ〜っ と漏れは思う訳。
だから、簡単かつ便利なショートカットは ある程度覚えてます。
だもんで、他の人達が頻繁にマウスに手を延ばすのを見て、別の意味で感心してしまう訳ですよ旦那。
(ちなみに、この間 びっくりしたのは、エディタでプログラムしている人が居て、コードのコピペをしているんだが、コピー&ペーストを マウスで しこしこやってんの。アレ見て、マウスに手を延ばさない 自分は、旧世代の人間なんだろうか?と考え込んでしまったね、ホント)


で、最近Excel使っていて段々我慢ならなくなったのが、セルの結合と解除の作業。
あ、セルの結合ってのは複数のセルを一つに合わせる機能の事。
Excel
Excel posted from フォト蔵

整形化された表を作るには便利な機能なんだけど、これが

  1. 1つにしたいセルを複数選択
  2. ツールバーの「セルの結合」ボタンに持っていってクリック

Excel
Excel posted from フォト蔵

なんて面倒な事をしなけりゃならない。
ショートカットか右クリックメニューにあれば、こんな面倒な事をしなくて済むのに って事で、右クリックメニューに「セルの結合」を入れる方法を探した訳。


ま、結論から言うと、VBAの機能を使えば出来る。
参考にしたレシピとしては、以下のサイト。


以下に簡単に作り方を示す。

1.新しいマクロの記録 を開始する
メニューから「ツール」→「マクロ」→「新しいマクロの記録」を選択する。
Excel
Excel posted from フォト蔵

で、「マクロを記録」ダイアログが出てくるが、この時、"マクロの保存先"を"作業中のブック"でなく"個人用マクロブック"にする事。
だって、作ったマクロを他でも使いまわしたいじゃん?("個人用マクロブック"にすれば、新規にブックを作っても使える)
Excel
Excel posted from フォト蔵

2."セルの結合"を行って記録完了
とりあえず、マクロの記録では "セルの結合"ボタンを押して作業を終了する。
Excel
Excel posted from フォト蔵

3.Visual Basic Editorを開く
メニューから「ツール」→「マクロ」→「Visual Basic Editor」を開く。
すると、personal.xlsの標準モジュールに、さっきの記録したマクロが入っている。
Excel
Excel posted from フォト蔵

4.コードを追加する
後は、このpersonal.xlsの標準コードん所に、コードを突っ込むだけ。("personal.xls 強化講座 その4"のコードを若干弄っただけの代物です。はい)
面倒なんで、以下のコードをコピペすればOKだと思うよ。

Sub auto_open()

    Add_RightClickMenu_2 1
    'auto_open に既に他のマクロが記述されている場合には、
    'この1行だけを追加する
End Sub


 
Sub Add_RightClickMenu_2(num%)    '標準メニューの下に追加
'                                auto_openに追加するのを忘れずに!
    Dim i As Long
    Dim cstBar As CommandBar
    Dim wcb As CommandBar
    
    i = 0
    For Each wcb In CommandBars
        i = i + 1
        Select Case wcb.Name
            Case "cell", "Cell", "column", "Column", "row", "Row"
                Application.CommandBars(i).Reset
                Set cstBar = CommandBars(i)
                cstBar_sub_2 cstBar
'            Case Else
'                DoEvents
        End Select
    Next
End Sub

Sub cstBar_sub_2(cstBar As CommandBar)
 
    Dim i%
    i = cstBar.Controls.Count + 1
'
    With cstBar
        .Controls.Add Type:=msoControlButton
        .Controls(i).Caption = "セルの結合(&B)"
        .Controls(i).OnAction = "Macro1"
        .Controls(i).FaceId = 798
        .Controls(i).BeginGroup = True
    End With
'
    i = i + 1
    With cstBar
        .Controls.Add Type:=msoControlButton
        .Controls(i).Caption = "セルの結合解除(&R)"
        .Controls(i).OnAction = "Macro2"
        .Controls(i).FaceId = 800
    End With
End Sub

Sub Macro1()
' セルの結合
    Selection.Merge
End Sub

Sub Macro2()
' セルの結合解除
    Selection.UnMerge
End Sub

5.早速試す
早速試してみよう。
実の所、方法としては、以下の2通りある。

  • 一旦ファイルを閉じて、Excelを起動する
  • auto_open関数の所にカーソルを移動して、F5キーを押す

まぁ、F5キーを押すのが楽ですな。
すると、auto_open関数の所にある"Add_RightClickMenu_2 1"のコードが実行され、右クリックメニューに"セルの結合"と"セルの結合解除"が追加されるという次第。
Excel
Excel posted from フォト蔵


余談だけど、右クリックメニューから"セルの結合"を外したければ、"Add_RightClickMenu_2"関数の"Application.CommandBars(i).Reset"の下の2行をコメントして、再度実行すればOK。綺麗さっぱり消えます。はい。