VBAでできる限り関数ポインタ/抽象クラスに近づけようとしています。
と呼ばれるクラスがVerificationManager
あり、いくつかのスプレッドシートのセルの束が一致することを確認します。これは、使用されている情報とスプレッドシートに応じて、さまざまな方法で行われます。
関数を使って呼び出すメソッドを文字列で指定してコードを再利用できるようにしたいApplication.Run
です。だから私は変化する関数を書き直すことができます。
Java または C# を使用している場合は、抽象クラスを拡張して内部を関数に書き直すことができます。JavaScript を使用していた場合、関数を変数に格納し、その変数をクラスに渡して、そこから呼び出すことができます。
クラス内には、呼び出したい関数の名前に設定した「verificationModule」というパブリック プロパティがあります。
Sub VerifyWorkLocations(empLoc As EmployerLocation)
...
For i = 0 To empLoc.numOfEmp
Application.Run verificationModule, empLoc.taxdescmatch, empLoc.employees(i)
Next i
...
End Sub
ただし、電話をかけようとするとApplication.Run
、次のエラーが表示されます。
コンパイル エラー:
「パブリック オブジェクト モジュールで定義されたユーザー定義型のみが、バリアントとの間で強制変換したり、遅延バインディング関数に渡すことができます」
すでにユーザー定義型を配置しようとしましたClass Module
が、基本的に、クラスモジュールは型の場所が間違っていると言われました。