Gab*_*Gab 11 excel vba dictionary excel-vba
我正在尝试使用类属性Get并Let在一个被调用的UserForm UBidStatus中填充一个名为的字典DicOption.
一切正常,直到该If Not DicOption(OptName).Exists行(需要错误404对象).
注意:如果我替换Public Property Letby中的整个代码,代码工作正常DicOption.Add key:=OptName, Item:=OptValue.
这是我试图解决的Userform类中的代码.
'Userform Class Module
Private DicOption As scripting.Dictionary
Public Property Get ProjectOption(ByVal OptName As String) As String
ProjectOption = UBidStatus.ProjectOption(OptName)
End Property
Public Property Let ProjectOption(ByVal OptName As String, ByVal OptValue As String)
If Not DicOption(OptName).Exists Then
DicOption.Add key:=OptName, Item:=OptValue
Else
DicOption(OptName) = OptValue
End If
End Property
Public Sub UserForm_Initialize()
Set DicOption = New scripting.Dictionary
End Sub
Private Sub UserForm_Terminate()
Set DicOption = Nothing
End Sub
Public Sub ExchangeToDicOption()
Dim LR As Long
Dim Rg As Range
Dim ws As Worksheet
Dim i As Long
Dim a As String
Dim b As String
Set ws = ActiveWorkbook.Worksheets(2)
Set Rg = ws.Columns(2)
DicOption.RemoveAll
LR = Rg.Find(What:="*", Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, MatchCase:=False).Row
If LR > 1 Then
For i = 2 To LR
a = Cells(i, 1)
b = Cells(i, 2)
UBidStatus.ProjectOption(a) = b
Next i
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
Sgt*_*ens 10
Exists方法的调用方式如下:
Dictionary.Exists(Key)
Run Code Online (Sandbox Code Playgroud)
所以试试吧
Public Property Let ProjectOption(ByVal OptName As String, ByVal OptValue As String)
If Not DicOption.Exists(OptName) Then
DicOption.Add key:=OptName, Item:=OptValue
Else
DicOption(OptName) = OptValue
End If
End Property
Run Code Online (Sandbox Code Playgroud)
如果分配给不存在的键,A Scripting.Dictionary将隐式调用其Add方法,因此如果目标是"添加或替换"指定键的值,则可以简单地替换:
If Not DicOption(OptName).Exists Then
DicOption.Add key:=OptName, Item:=OptValue
Else
DicOption(OptName) = OptValue
End If
Run Code Online (Sandbox Code Playgroud)
有:
DicOption.Item(OptName) = OptValue
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |