【Excel】マクロの使い方〜ステップアップ編〜

てちてちエンジニアのおっとーです。

今回は私が普段エクセルのマクロをどのように管理して使っているかを紹介しようと思います。

「マクロどう使うの?」って方や、「エクセル使ってるけど、マクロ使ったこと無い」って方は、
<EXCELマクロの使い方>を読んでからこの記事を読んでいただくと、
より具体的に管理・使用方法のイメージを持てると思います!

この記事で解決できる悩み

  • マクロを使うとファイル拡張子が変更されてしまう
  • 毎回VBE開いてマクロ貼り付けるの面倒
  • 業務で共有するファイルにマクロを残したくない

解決法

ズバリ!「別ブックでマクロを管理する」です!

エクセルのマクロは同じプロセス内で開いていれば、
マクロを管理しているブックからマクロを実行したいブックに対して
マクロ実行ができます!

「同じプロセスって何?」って方は、難しく考えずに
「マクロを管理するためのExcelファイルから、別のExcelファイルを操作できる」と理解してください。

具体的管理方法

解決法だけ先に書いてしまいましたが、これから具体的にどうすればいいのかを説明していきます。

マクロを管理するブックを作成して、
VBEを開いて標準モジュールを追加してから以下の内容を読み進めてください。

標準モジュール作成までの簡易手順:

  1. ブックを新規作成
  2. Alt+F11
  3. 挿入→標準モジュール

簡易手順をみてわからない場合は、 <EXCELマクロの使い方> の記事からご確認ください。

以下の説明内では作成したブックを「管理ブック」と呼び説明を行います。

①よく使うマクロを用意して標準モジュールへ貼り付け

今回の説明は、私が作成したマクロを例に説明を進めますが、
インターネット上で検索したマクロでも問題ありません。


「良く使うマクロがすでにあるよ」という方はそのマクロ使ってください。
それ以外の方は以下を使ってください。

管理ブックの標準モジュールにマクロを貼り付けてください。

'1つ目のマクロ
Sub SelectA1()
Dim wb As Workbook
Dim i As Long
Set wb = ActiveWorkbook
For i = 1 To wb.Sheets.Count
    wb.Sheets(i).Activate
    Cells(1, 1).Select
Next i
wb.Sheets(1).Activate
End Sub

'2つ目のマクロ
Sub ChangeReferenceStyle()
If Application.ReferenceStyle = xlA1 Then
    Application.ReferenceStyle = xlR1C1
Else
    Application.ReferenceStyle = xlA1
End If
End Sub
②ショートカット登録

ショートカット登録簡易手順:

  1. 開発タブ
  2. マクロ
  3. ショートカット登録するマクロを選択
  4. オプション
  5. ショートカットキー割り当て
③一覧画面を用意する

こんな感じでマクロを管理しています。
割り当てたショートカットキーは忘れることがあるので、
メモして残しておくと忘れた時に便利です。

④ボタンで一覧管理(ショートカットが苦手な方向け)

一覧画面のD列にボタンとあると思いますが、こちらはただ「❑」を入力しただけの状態になります。
これからD2とD3のセルをダブルクリックした時にマクロを起動させる手順を説明をします。

VBEを開いて一覧画面を作ったシートをダブルクリック
左側のドロップダウンからWorkSheetを選択
右側のドロップダウンからBeforeDoubleClickを選択
必要なコードを追加&Worksheet_selectionChangeを削除

Worksheet_selectionChange は今回不要なので削除します。

削除したら、以下の内容をWorksheet_BeforeDoubleClickの間に挟み込んでください。

'ダブルクリックされたのが4列目の場合
If Target.Column = 4 Then 
    '何行目がクリックされたかで処理を分岐
    Select Case Target.Row
    '2行目の場合
        Case 2
            SelectA1
            Cancel = True
            Exit Sub
    '3行目の場合
        Case 3
            ChangeReferenceStyle
            Cancel = True
            Exit Sub
        'その他の場合
        Case Else
            Cancel = False
        
    End Select
End If
セルをボタンのように動作させるマクロの説明

Worksheet_Before_DoubleClickはダブルクリックを検知する関数です。
ダブルクリック検知時に中身の処理が走り出します。

TargetにはRange(ダブルクリックした範囲/セル)が入ってきます。

Cancel = True/Falseは、ダブルクリック時の規定動作を行う行わないを設定できます。
True:ダブルクリックした時に編集モードに入らない
False:編集モードに入る

Exit SubはこのSubを抜ける(終了)という意味です。
ここでは Worksheet_BeforeDoubleClick を抜けるということです。

マクロ一覧のボタン列を変更したい場合、
If Target.Column = ○ をボタン列の番号に変更してください。

登録するマクロを増やす場合は
Case ○の行数を変更して、実行するマクロ名とCancel = Trueを設定してください。

下に変更する際の箇所を◯に変更したサンプルを貼っておきます。

If Target.Column = ◯ Then '⇐ボタン列
    Select Case Target.Row
        Case 2
            SelectA1
            Cancel = True
            Exit Sub
        Case 3
            ChangeReferenceStyle
            Cancel = True
            Exit Sub
        Case ◯            '⇐行数
            〇〇〇〇     '⇐起動させるマクロ名
            Cancel = True  
            Exit Sub
        Case Else
            Cancel = False
    End Select
End If

 

以上でボタン設定は完了です。
一覧画面からボタン列をクリックして動作確認してみてください。

ショートカット式とボタン式の使い分け

個人的には④で紹介したボタン(セル)で起動する方法より、
②のショートカットがおすすめです。

理由としては、ボタンクリックをトリガーにマクロを動作させると、
ActiveWorkbookやActiveSheet等の、「表示または作業中のブックを選択する」というプログラムの対象が
管理ブックになってしまうからです。

逆に言うと、ActiveWorkbook等が使用されていないものは、
ボタン等から起動すると、いつも使うマクロのために使いやすいショートカットのストックを残しておけます。

最後に

今回のサンプルの
1つ目のマクロはActiveWorkbookを使用している例です。
2つ目のマクロは使用していない例です。

 

ショートカットを利用すると、
同じプロセスで開いたブックでもマクロの挙動が確認できると思います。

また、ActiveWorkbookを使用していない、かつ対象がExcelアプリとなる場合、
ボタンクリックで起動させた内容は同じプロセスの別Excelファイルにも適用されていることが確認できると思います。

これで拡張子の変更や、都度マクロ貼り付けする手間や、マクロを残したくないファイルへの対応方法は完了です。

私は今回作成したような管理ブックで15個程度のショートカットと、
5個程度のボタン駆動のマクロを管理しています。

仕事の日は、PC起動したらとりあえず管理ブックを起動して最小化しておきます。
(最小化して他のExcelを開いていても、管理ブックで登録したショートカットは使用できます)

この方法を使うようになってから、作業時間30%カットできているといっても過言ではないと思います。

この記事が管理ブック作成のきっかけとなり、
快適なExcelライフへの第一歩となれたら嬉しいです。

コメント

タイトルとURLをコピーしました