多くの人がこのエラーについて質問してきましたが、それらの回答に基づいて、すべてのことを正しく行う必要があります。Excel VBA「型の不一致:配列型またはユーザー定義型が予期される」
私はVariable
というクラスを作成して、変数に関する複数の情報を格納しました。これらの変数の配列を格納する別のクラスEquipment
があります。ここに関連するコードはEquipment
である:
Public name As String
Private variables() As Variable
Public Sub setVariables(vars() As Variable)
variables = vars
End Sub
私もEquipment
のインスタンスを作成し、モジュールを持っています。ここではそのためのすべてのコードは次のとおりです。
Public Sub fillEquipment()
'figure out how many units of equipment there are
numUnits = 0
atRow = 1
Do Until Range("A" & atRow).value = ""
numUnits = numUnits + 1
atRow = atRow + 1
Loop
'create array for equipment units
Dim units() As Equipment
ReDim units(0 To numUnits)
'figure out how many variables there are
numVars = 0
For Each col In Range("A1:ZZ1")
If col.value <> "" Then
numVars = numVars + 1
End If
Next col
'create an array of equipment one row at a time
atRow = 1
Do Until Range("A" & atRow).value = ""
'create and name equipment
units(atRow) = New Equipment
units(atRow).name = Range("A" & atRow).value
'create an array of vars
Dim variables() As Variable
ReDim variables(0 To numVars)
For atCol = 1 To numVars
variables(atCol) = New Variable
variables(atCol).name = Cells(1, atCol).value
variables(atCol).value = Cells(atRow, atCol).value
Next atCol
'add variables to equipment
units(atRow).setVariables (variables)
atRow = atRow + 1
Loop
'print for testing
For atRow = 1 To numUnits
Cells(atRow, 1).value = Equipment(atRow).name
For atCol = 1 To numCols
Cells(atRow, atCol + 1).value = Equipment(atRow).getVariables(atCol)
Next atCol
Next atRow
End Sub
ここに私の問題だ:言葉units(atRow).setVariables (variables)
でvariables
上:「予想配列またはユーザー定義型の型の不一致」私はプログラムを実行すると、それは私のコンパイラエラーが発生します。
私は何が間違っているのか分かりません。 variables
はオブジェクトタイプVariable
の配列として定義されており、これはまさにsetVariables
が求めているものです。
ありがとうございました!私は本当に助けに感謝します!
この「プライベート変数()変数」は「プライベート変数()としてバリアント」である必要があります。コード全体で同じ変更を行う必要があります。自分で定義しない限り、 'Variable'型のようなものはありません。 – braX
"変数"というクラスを作成しました。タイプとして定義するには十分ではありませんか? –
ああ - それは表示されていません。私はあなたが今どこにそれを言及参照してください。ここでは、定義されていないコードもテストすることはできません。 – braX