絶対参照マクロ
これまでに作成したマクロは絶対参照のマクロです。
すなはち、固定された場所にしか結果が反映されません。
絶対参照で記録したマクロは、どのセルを選択してマクロを実行しても、
記録した時のセルに対してしかマクロは適用されません。
相対参照マクロ
そこで、アクティブな(Active≒選択されているて、入力を受け付ける状態)セルからの相対位置にマクロを実行させたい場合があります。
たとえば、「現在アクティブなセルの右下のセルに対してマクロを実行したい」場合など。
それを相対参照マクロと呼びます。
相対参照で記録すると、記録を開始したセルを基準としてマクロが記録され、
マクロ実行時には、アクティブなセルを基準としてマクロが実行されます。
問10で作成した「マイタブ」の「マイコマンド」グループに[
書式のクリア]と[
形式を選択して貼り付け]の各コマンドを追加しなさい。
コマンドの場所
・「書式のクリア」: 「ホーム」→「編集」→「クリア」
・「形式を選択して貼り付け」: 「ホーム」→「クリップボード」→「貼り付け」
解答例
下記の2つのマクロを記録し、ボタンに登録して実行しなさい。
マクロ名:「
画面設定」
・枠線、行列番号、シート見出し、水平スクロールバー、垂直スクロールバーを表示しない。
・背景に 「パブリックピクチャー」フォルダにある任意の写真を設定する。
マクロ名:「
画面復元」
・上記を表示して背景を削除する(すなわち、元の状態に戻す)。
解答例
問10と同じようにして、画面設定と画面復元のマクロを記録し、コマンドをタブに追加します。
画面設定の方法
・背景の設定
背景の削除
・枠線、見出し(行列番号)
・水平/垂直スクロールバー、シート見出し
設定と解除が正しく行われることを確認
マクロの自動実行
問13で作成したマクロ「画面設定」をこのシートがアクティブになったら自動的に画面設定されるようにしてみましょう。
また、このシートの任意のセルをダブルクリックしたら「画面復元」が起動され、元の状態に戻るようにしてみましょう。
万一正常に動作しなかった時に備えて左のボタンにもマクロを登録しておきましょう。
動作確認:
1)シート見出し「問13」を選択後、「問14」を選択する。
→画面の各オプションが設定され、背景画が表示されるはず。
2)シートの任意の部分を
ダブルクリックする。
→画面の設定が元の状態に戻る。
解答例
1)[開発]タブの[
Visual Basic]をクリックする。
2)下のような画面が表示されるので、
「
Sheet13(問14)」を選択(ダブルクリック)する。
3)左側のドロップダウンリストから「
Worksheet 」を選択、
右側のリストから「
Activate 」を選択する。
4) Private Sub Worksheet_Activate() の下に、
Call 画面設定 を入力
WorkSheet_Selection Change 以下の3行は不要なので消去しておきます。(残しておいても問題は無し)
5) 同様に「
BeforeDoubleClick 」を選択して、「
Call 画面復元」と入力する。
Private Sub Worksheet_Activate
シートが<
アクティブ(≒入力できる状態になった)ときに呼ばれる。
Private Sub Worksheet_BeforeDoubleClick
セルを
ダブルクリックして、エクセル既定の処理が開始される前にに呼ばれる。
別のシートに切り替え、再度、「問14」シートに切り替えたら
画面設定が行われ、
任意のセルをダブルクリックすると、
元の状態に戻ることを確認。