和風スパゲティのレシピ

日本語でコーディングするExcelVBA

クラスモジュール

帳票出力マクロを簡単に書くためのクラスを作る

完成品の全体が見たい!という方のための、マクロサンプルです。今回のテーマは「データシート⇒帳票を出力」です。利便性をテーマに作成しましたので、クラスの参考にするなり、中身を見ずにコピペして使うなり、お好きな方法でご活用ください。

コンストラクタ(Initialize)に引数を渡せない問題

クラスモジュールに関する小ネタです。VBAについての意見のなかでよく目にするのが、「コンストラクタ(Class_Initializeプロシージャ)に引数を設定できなくて困る」です。これがどういう意味なのか、どう対処すればよいかを、手短に説明していきます。

VBAにおいて「隠蔽」ってどのくらい重要?

VBAにおける隠蔽について考察します。隠蔽とは「2つのPropertyプロシージャによって変数を包み、代入と参照に何らかの制約をつけること」です。VBAにおいて隠蔽はそこまで重要でなく、むしろ隠蔽のないクラスの利便性に着目することが大事です。

Property Let と Property Set の違い

プロシージャの種類である、Property LetとProperty Setの違いを解説します。両者とも、プロパティの取得・設定を対となる2関数で行う仕組みのうちの、「値の設定」を担うプロシージャですが、対象とするプロパティがオブジェクトかどうかが異なります。

Function と Property Get の違い

プロシージャの種類である、FunctionとProperty Getの違いを解説します。どちらも、任意の数の引数を受け取り、1つの値を返します。Propertyの本来の目的である、同じ名前のProperty Let/Setプロシージャを用意できる点が、最も大きな違いです。

帳票出力マクロをクラスを使って書く

完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。クラスの基本的な書き方を使って実装しておりますので、クラスを勉強し始めた方は、参考にしてみてください。

固定のセル(Range)を定数(Const)で定義する

「固定セルを定数で扱いたい!」という場面は結構多いです。データシートの上部に固定された、「対象月」や「更新日」のセルとかですね。常に同じRangeオブジェクトをくれる定数がほしいのですが、Constではできませんので、別の方法を使います。