たまに実務関連でも。超初心者向けの内容です。
実行すると「全てのシートでセルA1を選択し、シート1を選択した状態で上書き保存してExcel自体を終了させる」アドインの作成を解説します。
アドインの作り方
まずアドインの作り方を簡単に。
まずは空白のブックを作る。
次に Alt + F11 を押してマクロ(VBA)の画面を出し、画像で示した箇所あたりで右クリック、「標準モジュール」を挿入。
コード(この後で解説)を書いたら名前を付けて保存→保存する時に「参照」を選び、「ファイルの種類」で「Excelアドイン」を選択、適当に名前をつけて保存(分かり易い名前かつ半角英数で)。保存先は自動的にExcelアドイン専用のフォルダに変わるので気にしなくて良い。
Excelに戻り、「開発」タブの中にある「Excelアドイン」をクリック、先ほど保存したExcelアドインにチェックを入れれば、アドインが使えるようになる。「開発」タブが出ていない場合はExcelのオプション→「リボンユーザー設定」で「開発」にチェックを入れる。
コードと1行ずつ解説
まず冒頭で書いた「全てのシートでセルA1を選択し、上書き保存してExcel自体を終了する」コードがこれ。全て半角英数で。全角文字は""(ダブルクオーテーション)で囲われた場所、あるいは ' (シングルクォーテーション)の後以外で使用禁止。
緑色の文字のところは自由な文字列で良い(ただし全角テメーはダメだ)。アドインの名前として表示されるので自分で分かり易い名前にすること。
Sub ~()
マクロのコードを書く上で最初に書く行。Subはサブプロシージャの略。深く考える必要はない。メールで言えば件名程度のものと思えばいい。~の場所には半角英数で適当に名前をつける。
Dim i
「i」という変数を宣言する。変数に日和ってる奴いるぅ!?居ねえよなぁ!!
For i = Worksheets.Count To 1 Step -1
「Worksheets.Count」は「ブックにあるシートの数」。変数 i がシートの数から1になるまでFor文の中を繰り返し処理する。「Step -1」を入れないと変数 i の値は1ずつ増えていくので意図した動作にならない。
Worksheets( i ).Activate
変数 i 番目のシートを選択する。シートをクリックして表示させた時と同じ挙動。
Cells(1, 1).Activate
セルA1を選択する。セルA1をクリックした時と同じ挙動。Cells(1行目, 1列目)という意味なのでここの数字を任意に変更しても良い。
違う書き方では「Cells(1,1).Select」、「Range("A1").Select」、「Range("A1").Activate」とも書ける。
Next i
変数 i の中身を次の数値( iから1を引く )に進めてForの最初へ戻る。もし i = 1 だったらNext i の先へ進む。
ActiveWorkbook.Save
今現在、作業中のブックを上書き保存する。
Application.Quit
Excel自体を終了する。ブックを2つ以上開いている時は上書き保存するかどうかのダイアログが出る。パパっと保存して消したい場合はブックを1つだけ開いた状態で使用するのが良い。