こんにちは、Ryoです。
Excelでシートを追加する際に、新規追加したシートに対して都度設定するのは面倒ですから、予めセルの列幅や行高さなどを所定のサイズに設定しておきたいことや、フォントなども決めておきたいことがあるかと思います。VBAではNewSheetイベントを使うことで実行できますので、その内容について書いていきます。
1.サンプル概要
セル幅や高さなどがデフォルトのシートがあり、フォントはMS Pゴシック(サイズ11)になっているとします。
本サンプルコードはブックモジュールに記述するので、シート追加操作を行えば自動的に実行されます。実行内容としては「セル列幅A~E」「セル行高さ1~15行」「フォント:メイリオ」「フォントサイズ:12」として追加するものです。
以後追加されるシートは全て同様の形になります。
2.サンプルコード
これはエディタ画面の「プロジェクトエクスプローラー」内にある「ThisWorkbook」に記述することで、当該ブックでのSheet追加は全て対象になります。
Private Sub Workbook_NewSheet(ByVal Sh As Object) '***指定範囲の行高さ、列幅を設定*** '1~15行の高さを30ポイント Rows("1:15").RowHeight = 30 'A~E列の幅を20ポイント Columns("A:E").ColumnWidth = 20 '***追加シートへのフォント設定*** 'シート全体を選択する Cells.Select 'Fontオブジェクト詳細については以下URL(MSDN)参照 'https://msdn.microsoft.com/ja-jp/vba/excel-vba/articles/font-object-excel With Selection.Font .Name = "メイリオ" .Size = 12 .Strikethrough = False '取り消し線設定 .Superscript = False '上付き文字設定 .Subscript = False '下付き文字設定 .OutlineFont = False 'アウトラインフォント .Shadow = False '影付きフォント .Underline = xlUnderlineStyleNone '下線設定 .ThemeColor = xlThemeColorLight1 '配色のテーマカラー設定 .TintAndShade = 0 '色の明暗設定(-1~1範囲、0が中間値) .ThemeFont = xlThemeFontNone 'テーマフォントの設定 End With End Sub
新しくワークシートを追加した際に処理を実行するには、NewSheetイベントを使用します。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
処理内容
End Sub
このような構文になり、引数のShは「追加されたワークシート」を表します。
・・・サンプルコード内で一つもSh使ってませんでしたが、例えばEnd Subの前に
MsgBox "追加シート名:" & Sh.Name
と記述すれば、メッセージボックスが表示されます。
次にサンプルコード内容についてです。
◆指定範囲の行高さ、列幅を設定
ここではサンプルとしてA~E列の幅を30ポイント、1~15行の高さを20ポイントに設定しますので、指定範囲の行や幅に対する処理を記述します。
行の高さ設定であれば、Rows(“1:15”).RowHeight = 30の様に記述し、
列幅の設定はColumns(“A:E”).ColumnWidth = 20とすればOKです。
記述内の行や列指定、及びサイズを任意に変更することで所定の様式にすることが出来ます。
◆追加シートへのフォント設定
次にフォント、フォントサイズなどの設定ですが、本サンプルでは適用範囲として「シート全体」にしています。全体を指定するにはCells.SelectとするだけでOKです。
後は選択状態にあるシート全体のセルに対して設定していきますが、フォントオブジェクトの詳細についてはMSDNのこちらがわかりやすいと思いますので、ご参照ください。
サンプルでは主要な部分を主に書いていますが、実際に設定する場合に必要なのは
With Selection.Font内の「 .Name = “メイリオ”」「 .Size = 12」ぐらいかと思いますので、他の設定部分については用途に応じて適宜処理すれば良いかと思います。
3.まとめ
NewSheetイベントを使うことでサンプルに示したように、新規追加していくシートを所定の様式に揃えることが出来るので、複数シートに跨っていくような作業や処理には活用できるケースもあるかと思います。私もですが、このようなイベント処理は知っておくことで何かの拍子に有用な使い道が閃いたりしますので、知っておいて損はないですよ(笑)
以上、ワークシートを新規追加した時に処理を行う方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo