私は現在、以下の画像に示されているデータ構造を使用してクラスのインスタンスを格納しています。各-List
アイテムは辞書であり、それぞれ-Info
アイテムはクラスのインスタンスです。Excel VBA:辞書に格納されたクラスのインスタンスを参照する方法はありますか?
私は別のインスタンスに等しいあなたSet
インスタンス変数ならば、それだけで元のインスタンスを参照することを他の場所でお読みください。これは正しいです?
次のコードを使用してfileInfo(1)
(画像内)の参照を作成することができました。
Dim prflInfo As File_Info
Set prflInfo = New File_Info
Set prflInfo = fileList.Items(0)
私は、次のコードを使用してbranchInfoインスタンスを参照しようとしましたが、私はそうしようとしたとき、私はRun-time error 13: Type mismatch
を取得します。
編集:下記は、File_Infoクラスのコードです。他のすべてのクラスは、この基本モデルに従います。
'Class Module: File_Info
'Initialise class variables
Private pfileID As Integer
Private pfilePath As String
Private pfileName As String
Private pbranchList As Scripting.Dictionary
'Declare variantcopy subroutine
Private Declare Sub VariantCopy Lib "OleAut32" (pvarDest As Any, pvargSrc As Any)
Private Sub Class_Initialize()
Set pbranchList = New Scripting.Dictionary
End Sub
Public Property Let fileID(pfileIDi As Variant)
pfileID = pfileIDi
End Property
Public Property Get fileID() As Variant
fileID = pfileID
End Property
Public Property Let filePath(pfilePathi As Variant)
pfilePath = pfilePathi
End Property
Public Property Get filePath() As Variant
filePath = pfilePath
End Property
Public Property Let fileName(pfileNamei As Variant)
pfileName = pfileNamei
End Property
Public Property Get fileName() As Variant
fileName = pfileName
End Property
Public Sub addbrConn(branch As Branch_Info)
pbranchList.Add branch.branchID, branch.brConn
Debug.Print "addbrConn ID: " & branch.branchID
End Sub
Public Sub addBranch(branch As Branch_Info)
pbranchList.Add branch.branchID, branch
Debug.Print pbranchList.Count
End Sub
Public Function countbrList()
countbrList = pbranchList.Count
End Function
Public Function getbrKey(Key As Variant)
getbrKey = pbranchList.Keys(Key)
End Function
Public Function getbrItem(Key As Variant)
getbrItem = GetByRefVariant(pbranchList.Items(Key))
End Function
Public Sub dpbrList()
With pbranchList
Debug.Print pbranchList.Count
For k = 1 To pbranchList.Count
Debug.Print .Keys(k - 1), .Items(k - 1)
Next k
End With
End Sub
Public Sub updbrList(branch As Branch_Info)
Dim branchID As String
branchID = branch.branchID
If pbranchList.exists(branchID) Then
pbranchList.Remove (branchID)
pbranchList.Add branchID, branch
Debug.Print "Complete: " & branchID & " added."
Else
Debug.Print "Error: " & branchID & "does not exist."
End If
End Sub
Private Function GetByRefVariant(ByRef var As Variant) As Variant
VariantCopy GetByRefVariant, var
End Function
ブランチインフォクラス内のデータを簡単に抽出できるように、ブランチインフォクラスを参照する方法はありますか?
ありがとうございます!
Eeshwar
ありますが、私は、あなたの質問に応答するために、クラスのプロパティとメソッドにコードなどせずに、それは難しいだろう。 –
こんにちは、画像をインラインで含むように質問を更新していただきありがとうございます。 File_Infoクラス情報を追加しました。それが役に立てば幸い! – Eeshwar