Excelのマクロで効率化
Excelで複数のシート間を移動するのにシートのタブをクリックすれば各シートに移動できますが、シート数が多いと表示されない場合があり、シート間の移動が面倒になる場合があります。
そんな場合にマクロをボタンに割り当てて簡単にシート間を移動できるボタン(マクロ)を作成してみます。今回は月ごとの現金出納帳シートを作成してマクロで登録したボタンでシート間移動をしてみます。※現金出納帳では10月分になっていますがあまり気にしなくて大丈夫です。
リボンのクイックアクセスバーのカスタマイズ
マクロを使用する前にリボンにボタンアイコンを追加できるリボンアイコンを表示します。
クイックアクセスツールバーのユーザー設定→その他のコマンドから追加します。
クイックアクセスツールバーから設置します。
クイックアクセスツールバーのカスタマイズ画面が表示させます。
コマンドの選択→開発タブ→挿入(コントールの挿入)→追加をクリックするとアイコンが追加されます。
クイックアクセスバーはリボンの下にも表示できます
リボンの下側にクイックアクセスバーが表示されアイコン名も表示されます。
追加した挿入の内容は上記のとおりです。
クイックアクセスバーの設定の準備ができました。
フォームコントロールボタンを使ってみる
クイックアクセスバーに追加した挿入からフォームコントロールのボタンをクリックしてシートにボタンを追加してみましょう。
挿入をクリックしてフォームコントロールのボタン(フォームコントロール)をクリックしてセル上の任意の場所、大きさでドラックします。
ドラックしてマウスの左クリックを離すとマクロの登録画面が表示されます。
マクロ登録が表示されたらキャンセルをクリックします。ここではマクロ登録はしません。
Excelファイルに戻るとボタンが表示されますので、ボタンの名称を数字に「1」に変更します。
ここで表示されているシート名を「Sheet1」から半角で数字の「1」に変更します。ここ重要です。
名前を変更したらこのシートをコピーします。
シートのコピーを作成します。
1(2)のシートが作成されます。
フォームボタンをコピペして「2」のボタンを作成、シート名「1(2)」のシート名を数字の「2」に変更します。
マクロを記録
シート間を移動するマクロを登録していきます。
シート「2」を選択します。シート「1」、「2」も全く同じです。
表示→マクロをクリックします。
マクロの記録をクリックします。
マクロの記録画面が表示されますので任意のマクロ名を入力します。
マクロ記録中はステータスバーに
上記マーク表示されます。
マクロ記録マークが表示されたらシート「1」をクリックします。この時点でマクロが記録されますのでこのままマクロの記録終了をします。
リボンの表示→マクロをクリックします。
マクロの記録終了をクリックします。
記憶したマクロを確認する
リボンの表示→マクロをクリックします。
一覧にあるMacro1を選択して編集をクリックします。
Microsoft Visual Basic for Applications(以下、VBA)が表示され、標準モジュールのツリーにModule1が表示され、コードが記載されたウインドウが表示されます。これがマクロで記録したコードです。
内容は以下の通りです。
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets("1").Select
End Sub
Sub Macro1()は宣言文・・End Subは終了文です
ここで必要なのが 「Sheet(”1”).Select」でシートの1を選択したということになります。
'
' Macro1 Macro
'
'
部分はコメントアウトなので削除しても大丈夫ですので削除します。
Sub Macro1()
Sheets("1").Select
End Sub
成形して上記の通りして保存します。VBAのウインドウを閉じ、Excelの画面に戻ります。
フォームボタンにマクロを登録する
フォームコントロールボタンにマクロを登録する場合は、ボタンに右クリックしてマクロ登録をクリックします。
「2」のシートを選択してからマクロ登録してください。
マクロを登録したMacro1を選択してOKをクリックします。
これでマクロの登録は完了しました。
フォームボタンの複製
シートの[1]を選択して作業を行います。
リボンからホーム→検索と選択をクリックしてオブジェクトの選択をクリックします。
フォームボタンをマウスでドラックします。
選択中のフォームボタンをコピペします。
6回コピペします。
コピペしたフォームボタンをテキトーに横並びにします。
フォームボタンを選択してから図形の書式→配置で上揃えと左右整列をします。
完了したら、リボンのホーム→検索と選択をクリックして、オブジェクトの選択を解除します。
フォームボタンを右クリックしてテキスト編集して1から12までフォームボタンの名称を変更します。
ついでにフォームボタンをグループ化をしておきましょう。
VBAでマクロのコードを複製
ここまででフォームボタンが作成できたので、任意のボタンで右クリックしてマクロの登録を選択して
Macro1を選択して編集をクリックしてVBAを起動します。
Macro1を選択して編集をクリックします。
VBAが立ち上がります。
VBAが立ち上がったらModule1が選択され、先ほど登録したMacro1のコードが記載されています。
これに1行追加してシートを選択したときにどのセルにフォーカスするかを記載します。
Sub Macro1()
Sheets("1").Select
Range("A5").Select '←シート「1」の「A5」セルにフォーカスさせる
End Sub
記載されているコードを12個コピペします。
以下の通りにコピペしたコードの内容を修正します。
Sub Macro1()
Sheets("1").Select
Range("A5").Select
End Sub
↓
Sub Macro2()
Sheets("2").Select
Range("A5").Select
End Sub
コピーしたコードのMacro1()とSheets(“1”)の数値をすべて2~12に変更してVBAを終了します。
フォームボタンにマクロを登録
作成したフォームボタンにVBAで作成してマクロを登録します。
フォームボタン[2]を右クリックして、マクロの登録をクリックするとマクロの登録画面が表示されるのでフォームボタン[2]→Macro2を登録し、同様にフォームボタン[3]→Macro3を登録していきます。
シートの複製
シートの複製をする前に現時点で[1]と[2]のシートが存在していますので、フォームボタンが複製されていないシートの[2]を削除します。
シートの削除はシートの上で右クリックして削除します。
シート[1]に作成したフォームボタンがあること
を確認して複製します。
複数のシートを作成する場合はコピーを作成した後にCtrl+クリックで複数のシートを選択して作成すると一気に作成できます。
シートを1(12)まで複製したらシート名を1~12に変更します。
ここまで出来たら各フォームボタンをクリックしてシート間で移動できることを確認します。
あとはシートの日付と内容と残高をクリアすれば完成します。
まとめ
マクロは最初の登録が面倒ですが、一度マクロの登録してしまえばシート間の移動が簡単になります。
今回はとても簡単なマクロですが同じようにマクロの記録や登録を行うことで同じ作業を自動化できますのでチャレンジしてみましょう。
コメント