====== howto:excel:クラスモジュールを生成できない ====== ===== .xlaに作成したクラスモジュールを生成できない ===== ==== 症状1 ==== - .xlaファイルを作成 * オブジェクト名 test とする * クラスモジュール test_class、メンバ変数 init() を作成 - .xlsファイルを作成 * クラスモジュール test_class の変数 sample を参照できない。 == 例).xls == Sub ボタン1_Click()  Dim sample As new test.test_class ← test_class を参照できない  Call aaa.Init("AAA","BBB","CCC") End Sub ==== 対策1 ==== * クラスモジュール test_classのプロパティ「instancing」の設定を「**1-Private**」→「**2-PublicNotCreatable**」に変更 ==== 症状2 ==== * **対策1** を実施後実行すると、「コンパイルエラー Newキーワードの使用方法が不正です」とエラーになる。 ==== 対策2 ==== - .xla の標準モジュール内に、test_class オブジェクトを生成して戻り値で返すcreate_class() を作成 - .xls 側で作成した create_class() をCall して test_class を生成する。 == 例).xla == Function create_class()  Set create_class = New test.test_class End Function == 例).xls == Sub ボタン1_Click()  Dim sample As test.test_class  set sample = create_class()  Call sample.Init("AAA","BBB","CCC") End Sub