遍历字典时键入不匹配

Crystalsky

我偶然发现了一个我无法解决的问题。我正在尝试创建字典,例如:键:数字作为字符串项:字符串数组

当我将密钥传递给MsgBox时,一切都很好,但是当我也想添加Items时,我收到类型不匹配错误...

我的代码如下所示:

Sub test()

Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary

Dim records As String
Dim RecordArray() As String

Dim x As Integer
            Application.ScreenUpdating = False
            NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
            Range("A1").Select

For x = 1 To NumRows

                If IsNumeric(Cells(x, 1).Value) Then
                    records = Trim(Cells(x, 2).Value)
                    RecordArray() = Split(records, ",")
                    dict.Add Key:=(Cells(x, 1).Value), Item:=RecordArray()

            ActiveCell.Offset(1, 0).Select

        End If
        Next x


        Application.ScreenUpdating = True

Dim key As Variant
        For Each key In dict.Keys
                MsgBox key
                MsgBox dict(key)
        Next key

End Sub

数据例如:

A1:2001 B1:  0000101,0000102,0000103
A2:2015 B2:  0000107,0000108
A3:8000 B3:  0000215,0000216,0000217

等等。请注意,B列中的值以文本之前的两个空格开头。我在这里做错了什么?我知道这段代码可能不太好,但这就像我第一次尝试使用VBA :(

帕维尔·奇兹(Pawel Czyz)

由于尝试将数组放入msgbox中,因此出现类型不匹配的情况。试试这个:

Sub test()

Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary
dict.CompareMode = BinaryCompare

Dim records As String
Dim RecordArray() As String

Dim x As Integer
            Application.ScreenUpdating = False
            NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
            Range("A1").Select

For x = 1 To NumRows

                If IsNumeric(Cells(x, 1).Value) Then
                    records = Trim(Cells(x, 2).Value)
                    RecordArray() = Split(records, ",")
                    keyString = (Cells(x, 1).Value)
                    dict.Add key:=keyString, Item:=RecordArray()

            ActiveCell.Offset(1, 0).Select

        End If
        Next x


        Application.ScreenUpdating = True

Dim key As Variant
        For Each key In dict.Keys
                MsgBox key
                i = 0
                For Each Item In dict(key)
                    MsgBox (dict(key)(i))
                    i = i + 1
                Next Item
        Next key

End Sub

我提供了一个循环来显示存储在字典中的数组的每个项目。如果只需要一个msgbox,则可以使用相同的方法构建一个字符串并显示它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

遍历.plist字典。类型不匹配

尝试使代码更快时键入不匹配

循环数组时键入不匹配错误

尝试更改折线图的颜色时键入不匹配

在设置数组值时键入不匹配13错误13

尝试搜索数组列表时键入不匹配

在向用户窗体添加图标时键入不匹配

使用vba修剪值时键入不匹配(错误13)

将值导入数组时键入不匹配错误

使用 range.find 时键入不匹配错误

不遍历整个字典

MS Access VBA:出现错误“ 13”:从其他形式调用函数时,键入不匹配

得到运行时错误“ 13”:运行以下宏时键入不匹配

scala:尝试连接两个列表或创建列表时键入不匹配

返回 Map(String,java.sql.Date) 时键入不匹配

根据范围设置日期数组时键入不匹配错误

从合并单元格中删除时键入不匹配 13 错误 - VBA

Excel-选择多个单元格时在VBA中键入不匹配错误13

在Salesforce中创建订单项时在m子中键入不匹配错误

运行时错误'13':清除单元格内容时键入不匹配

在 Kotlin 列表中使用泛型时键入不匹配错误

运行时错误13:每次我运行代码时都键入不匹配

运行时错误'13:比较日期时键入不匹配-EXCEL VBA

类型不匹配遍历形状

VBA遍历各列,并在匹配(或不匹配)时应用公式

条件评估在空行上键入不匹配

使用拆分 VBA 键入不匹配

将数据从 excel 复制到另一个 excel 时键入不匹配错误

为什么在键入给定vector [which.max()]时,其中which.max()的索引与索引的值不匹配?