はじめに
学習記録・復習のためまとめています。IT業界2年目のひよっこです。
基本
作成したマクロの呼び出し方法
・マクロ上で、他のマクロ(プロシージャ)を呼び出す方法
Callステートメントをしようしてマクロを記述する
例 ※マクロ名の後にかっこは不要!
Call test1
Call test2
1)開発タブ>挿入>ボタン(フォームコントロール)
2)該当のマクロを選択
3)右クリック>テキストの編集から表示名を入力する
シート操作
シートの指定方法
<こんなときに使える>
・複数シートがあり、明確に指定したいとき
'シート名で指定したいとき
Worksheets("シート名").対象セルなど
'シート番号で指定したいとき
Worksheets(シート番号).対象セルなど
・シート名が頻繁に変わる場合は、シート番号で指定した方が修正が少ない
・シート番号はブック内で左から順に附番される(非表示シートも同様に附番される)
シート数を数える
<こんなときに使える>
・シート数を数えたいとき
・シート数の増減があっても、修正不要で汎用的に使いたいとき
Worksheets.Count
ブック内の全てのシート数を数えるため、引数(シートの指定)はない
例 全てのシートに対して繰り返しなにかの処理をしたい場合
Dim i
For i = 1 To Worksheets.count
処理
Next
シートを削除
<こんなときに使える>
・シートを削除したいとき
Worksheets(対象シート).Delete
例 値が入っていても、警告ウィンドウを表示せずシートを削除する方法
'警告ウィンドウを非表示
'※Alertsは複数形の「s」になる
Application.displayAlerts = False
Worksheets(対象シート).Delete
'警告ウィンドウを表示 ※必要な場合のみ非表示設定した方がよいため、削除後は表示する設定に戻すことが推奨されている
Application.DisplayAlerts = True
シートをコピー
<こんなときに使える>
・シートをコピーしたいとき
・全シート または、コピーする場所(ブック内)を指定したいとき
'新規のブックにコピーしたい場合
Worksheets(コピーしたい対象シート).Copy
'現在のブックにコピーしたい場合
'対象シート※よりも「前(左)」に追加したい場合
Worksheets(コピーしたい対象シート).Copy before:= Worksheets(対象シート※)
'対象シート※よりも「後ろ(右)」に追加したい場合
Worksheets(コピーしたい対象シート).Copy after:= Worksheets(対象シート※)
・「コピーしたい対象シート」の記載がない場合(Worksheets.Copy)は、全シートがコピーされる
・コピー後のブックやシートが「アクティブ(ブック/シート)」になる
・基本的な文法は、移動(Move)メソッドと同じ
例 テンプレートシートを12ヵ月分コピーして、シート名を「Y月」にしたい場合
Dim i
'1月から12月分を繰り返しコピーする
For i = 1 To 12
'シートの最後に追加していく
Worksheets("テンプレート").Copy after:=Worksheets(Worksheets.count)
'変数を使って、最後に追加したシートの名前を変更する
Worksheets(Worksheets.count).name = i & "月"
Next
シートを移動
<こんなときに使える>
・シートを移動したいとき
・移動する場所(ブック内)を指定したいとき
'新規のブックに移動したい場合
'※対象シートのみ、新規ブックに移動する
Worksheets(移動したい対象シート).Move
'現在のブックに移動したい場合
'対象シート※よりも「前(左)」に移動したい場合
Worksheets(移動したい対象シート).Move before:= Worksheets(対象シート※)
'対象シート※よりも「後ろ(右)」に移動したい場合
Worksheets(移動したい対象シート).Move after:= Worksheets(対象シート※)
・基本的な文法は、コピー(Copy)メソッドと同じ
・移動後のブックやシートが「アクティブ(ブック/シート)」になる
シートを追加
<こんなときに使える>
・シートを追加したいとき
・追加する場所(ブック内)やシート数を指定したいとき
'追加したい場合
Worksheets.Add
'対象シート※よりも「前(左)」に、2シート追加したい場合
Worksheets.Add before:= Worksheets(対象シート※),Count := 2
'対象シート※よりも「後ろ(右)」に、4シート追加したい場合
Worksheets.Move after:= Worksheets(対象シート※) ,Count := 4
・新規シートが追加される
・「Worksheets.Add」のみの場合は、アクティブシートの前(左)に追加される
(※忘れやすい場合は、新規シートが「ちょいと前(左)失礼~!」と言いながら割り込んでくるイメージで覚える)