PR

【VBA】WithEventsキーワードでイベントをハンドルする

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、Ryoです。
WithEventsキーワードを利用しApplicationオブジェクトを指定することでApplicationクラスのイベントを扱えますので、新規にブック作成都度フォント設定やセルサイズを方眼紙とするサンプルを書いていきます。

スポンサーリンク

1.サンプル概要

ブックモジュールにコードを記述したファイルを開いている状態で新規にブックを作成すると下の画像のように指定したフォント設定(Font:メイリオ、Font size:11)、列幅と行高さをそれぞれ35ピクセルとするサンプルです。

Applicationクラスのイベントなので、実行元ファイルが起動している間は新規ブックを作成する度に反映される形になります。

2.サンプルコード

これらのコードは「ブックモジュール」に記述します。

'Applicationクラスのイベントをハンドルする
Private WithEvents weSmp As Excel.Application

Private Sub Workbook_Open()
    'ブックを開いた際に参照を取得
    Set weSmp = Excel.Application
End Sub
'新規にブックが作成された際の処理
Private Sub weSmp_NewWorkbook(ByVal Wb As Workbook)
  'ワークシート(1番目)に対する処理
  With Wb.Worksheets(1).Cells
       'フォント設定
       .Font.Name = "メイリオ"
       .Font.Size = 11
       '列幅と行高さを同サイズに揃える
       .RowHeight = 26.25   '35ピクセル
       .ColumnWidth = 4.29  '35ピクセル
       'セルA1へ文字列を入力する
        Wb.Worksheets(1). _
        Range("A1").Value = "セルサイズ:35×35ピクセル"
  End With  
End Sub

イベントをハンドルするにはWithEventsキーワードを利用します。

構文:Private[Dim/Public]WithEvents expression As Type

本サンプルはTypeにApplicationオブジェクトを指定しているので、Applicationクラスのイベントを扱える形になっています。

Private WithEvents weSmp As Excel.Application

Private Sub Workbook_Open()
Set weSmp = Excel.Application
End Sub

WithEventsキーワードを付けて変数宣言することでオブジェクトボックスで変数名を選択し関連イベントを設定することが可能になります。

本サンプルではブック新規作成時に発生するイベントとしますのでApplicationクラスのNewWorkbookイベントを使用します。

Private Sub weSmp_NewWorkbook(ByVal Wb As Workbook)

後は作成された新規ブックに対する処理になるので、ここではフォント設定と列幅・行高さ設定の処理を行っています。

With Wb.Worksheets(1).Cells
.Font.Name = “メイリオ”
.Font.Size = 11
.RowHeight = 26.25
.ColumnWidth = 4.29
Wb.Worksheets(1). _
Range(“A1”).Value = “セルサイズ:35×35ピクセル”
End With

これで新規作成されるブックは全て設定が反映される形となります。

3.まとめ

今回は利用機会が限られるので用途もそれほど多くなさそうなWithEventsキーワードについてでしたが、例えば実行元ファイルに紐付いた様式などで新規ブックを作成していくようなケースでは使いどころもありそうに思います。



処理の1つとしてを知っておくと用途によっては役に立つケースもありますので、利用機会があればぜひご検討くださいませ。

以上、WithEventsキーワードでイベントをハンドルする方法についてでした!今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました