В моем коде нужно хранить два значения в моем ключе, чтобы иметь возможность выполнять анализ, который мне требуется. И так как я не хотел хранить все в массиве, я решил создать объект с 2 параметрами. Но когда я запускаю функцию Exist в словаре с этим объектом «TwoInputs» в качестве типа Key, я всегда понимаю, что их Key не существует. Может кто-нибудь помочь, пожалуйста?
Я добавил «Option Compare Text» на всякий случай, но существующие все еще возвращают False.
Когда я построчно запускаю код и заставляю его переходить в условие «истинно», новый ключ все еще создается, не знаю почему.
Это модуль класса, который я создал:
Private acc As Double
Private act As Variant
'Account property
Public Property Get Account() As Double
Account = acc
End Property
Public Property Let Account(Value As Double)
acc = Value
End Property
'Activity property
Public Property Get Activity() As Variant
Activity = act
End Property
Public Property Let Activity(Value As Variant)
act = Value
End Property
В обычном модуле я написал функцию для создания объекта TwoInputs на основе двух записей:
Public Function cTwoInputs(Account As Double, Activity As Variant) As TwoInputs
Set cTwoInputs = New TwoInputs
cTwoInputs.Account = Account
cTwoInputs.Activity = Activity
End Function
Затем я создаю подпрограмму, в которую я хочу добавить 2 информации в ключ, если они существуют:
While dataSheet.Range("dataAgent").Offset(j, 0).Value <> "Project ID:" And dataSheet.Range("dataAgent").Offset(j, 0).Row <= lRow
If dataSheet.Range("dataAgent").Offset( j, 0).Value = "Activity ID:" Then
actName = dataSheet.Range("dataAgent").Offset(j, 1).Value
End If
If (dataSheet.Range("dataAgent").Offset(j, 0).Value = "XXXXX" Or dataSheet.Range("dataAgent").Offset(j, 0).Value = "") Then
KeyExist.Account = dataSheet.Range("dataAccount").Offset(j , 0).Value
KeyExist.Activity = actName
If dicBudget.Exists(KeyExist) Then
dicBudget(KeyExist) = dicBudget(KeyExist) + dataSheet.Range("dataBudget").Offset(j , 0).Value
Else
dicBudget.Add cTwoInputs(dataSheet.Range("dataAccount").Offset(j, 0).Value, actName), dataSheet.Range("dataBudget").Offset( j, 0).Value
End If
End If
j = j + 1
Wend