私は、オートメーションのスケジューリングのコードを書いています。私はVBAプログラミングには比較的新しいですが、何年も他の言語でプログラミングしています。私のプロジェクトでは、操作フロアをシミュレートするはずのOpsFloorというクラスを作成しました。私は配列にユーザー情報を解析していて、その配列を渡そうとしています(私は配列全体と個々の値を渡してみました)をOpsFloorオブジェクトのインスタンスに渡しました。クラスがVBAでどのように動作するかについて、いくつかの基本的な誤解があることを心配しています。以下は、ここでは、クラス内のカスタムクラスオブジェクトのメソッドを呼び出すことができません。Excel VBA
Public Sub SetProcessMatrixValue(x As Integer, y As Integer, value As Integer)
ProcessMatrix(x, y) = value
End Sub
からサブは、Excelのワークシートオブジェクトのサブ内からの呼び出しです:
Option Explicit
Private OperationMatrix(18, 8) As Integer
Private dailyWF As New OpsFloor
Public Sub StartingWorksheet()
...
dailyWF.SetProcessMatrixValue 0, 0, 30
End Sub
私はクラスのインスタンスにそれらの値を割り当てるために、サブを実行しようとするとSetProcessMatrixValueメソッドを使用して、実行時エラー '438'オブジェクトがこのプロパティまたはメソッドをサポートしません。
ご迷惑をおかけして申し訳ありませんが、どこからコードを取得したのかわかりません。 –
申し訳ありませんが、私のコードだった:)この 'dailyWF.SetProcessMatrixValue 0、0、30'行で起きているのですか? –
私は実際にそれを理解しました。私のクラスはコンストラクタコードのエラーのため正しくインスタンス化されませんでしたが、 'Dim dailywF As OpsFloor:Set dailyWF = New OpsFloor'の代わりに' Private dailyWF As New OpsFloor'を使用したので、コンストラクタ内のエラー(コレクションに追加するときは不要な括弧)、今は完全に実行されます。 –