こんにちは、小栁です。
今回は、ExcelVBAを使ってExcelファイル起動時に自動で実行されるプログラムを作ります。
後半ではVBAを使って設定することができる各種項目を紹介します。
この記事の内容は、下記の記事で紹介した、外部ファイルを参照してVBAのソースコードを更新するやり方とも相性がいいです。
まずは、例をご覧ください。
このように、ワークシートに何もないExcelファイル(マクロを含むxlsmファイル)を用意します。
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Sub Auto_Open() Worksheets("Sheet1").Range("B2:K20").Borders.LineStyle = xlContinuous Worksheets("Sheet1").Range("B2:K2").Interior.ColorIndex = 6 With Worksheets("Sheet1").Buttons.Add(Range("M2").Left, Range("M2").Top, Range("M2:O2").Width, Range("M2:M5").Height) .Characters.Text = "ボタン1" .OnAction = "program_start" .Font.Bold = True .Font.Size = 14 End With End Sub |
これを保存して開きなおすと、以下のような画面ができあがるかと思います。
本記事ではこの仕組みを解説します。
VBAでAuto_Openプロシージャを作成する
Excelファイル起動時に自動でプログラムを実行するには「Auto_Open」を使います。
やり方はとてもシンプルで、まずはExcelのVBEditorを開きます。
VBEditorの標準モジュールにこのようなプロシージャを作成します。
1 2 3 |
Private Sub Auto_Open() End Sub |
以上で設定完了です。
このプロシージャの中に記述した処理はExcelファイルを開いた直後に自動で実行されます。
VBAを使えばExcelでのいろいろな作業を自動化できる
これから紹介するVBAのプログラムをAuto_Openプロシージャの中で行えば、ワークシート画面を操作せずとも起動といっしょに意図した初期画面を用意することができます。
以下で紹介するものは今回のAuto_Openプロシージャに限らずとも通常のプロシージャの中でも使える基本的なものなので、いろいろな場面で応用が利くと思います。
VBAを使えば、「Excelワークシート上で」マウスを使って行ういろいろな作業を同じように再現することができます。
うまく活用すれば複数のExcelブックを少ない工数で書き換えたり設定を変更したりすることができます。
さらに詳しい個別の事例については以下の各項目に登場するキーワードを使って調べてみてください。
セルの設定
値
【★全体的に画像が大きすぎるかも。width・heightを調整した方がよさそう】
1 |
Worksheets("Sheet1").Range("B2").Value = "テスト" |
背景色
セルの背景色を黄色にします
色を指定する数値は「ColorIndexプロパティ」です
1 |
Worksheets("Sheet1").Range("B2").Interior.ColorIndex = 6 |
罫線
1 |
Worksheets("Sheet1").Range("B2").Borders.LineStyle = xlContinuous |
書式設定
1 |
Worksheets("Sheet1").Range("B2").NumberFormatLocal = "@" |
コメント
1 |
Worksheets("Sheet1").Range("B2").AddComment "これはコメントです" |
行や列の設定
幅
1 |
Worksheets("Sheet1").Range("B:B").ColumnWidth = 5 |
非表示
1 |
Worksheets("Sheet1").Range("2:2").Hidden = True |
ボタンの設定
作成
ボタンを作成します
セルを使って位置を指定します
※左上から右に何ピクセル、下に何ピクセルというように絶対座標で位置を決める方法もあります。
1 2 3 4 5 6 |
With Worksheets("Sheet1").Buttons.Add(Range("B2").Left, Range("B2").Top, Range("B2:B2").Width, Range("B2:B2").Height) .Characters.Text = "ボタン1" .OnAction = "program_start" .Font.Bold = True .Font.Size = 12 End With |
削除
このコードは指定したシート上のすべてのボタンを削除します。
1 |
Worksheets("Sheet1").Buttons.Delete |
シートの設定
作成
1 2 |
Set ws = Thisworkbook.Worksheets.Add() ws.Name = "新しいシート" |
削除
指定したワークシートを削除します
1 |
Worksheets("Sheet1").Delete |
上記のコードだと削除の確認をするポップアップが表示されます。
1 2 3 |
Application.DisplayAlerts = False Worksheets("Sheet1").Delete Application.DisplayAlerts = True |
非表示
ワークシートを非表示にします。削除ではないので再表示することができます。
1 |
Worksheets("Sheet1").Visible = False |
最後に
ExcelVBAはできることが多く、新しい情報を知ったときにすぐに自分のパソコンで試すことができるのがいいところです。普段マウスだけでやっていた作業をVBAを使って操作してみると新しい発見や効率化に繋がるかもしれません。
Excel/ExcelVBAでのお困りごとなどありましたらお気軽にご相談ください。