VBA - 使用多维数组而不是两个单独的数组?

时间:2011-03-30 08:00:13

标签: arrays vba vbscript word-vba

最近有很多愚蠢的问题,但我很欣赏这方面的一些意见。 我有一个来自INI文件的字符串。它看起来像Firstname=FIRSTNAME。这基本上是一个包含这些负载的数组。我想把它们分开,但要保留它们。所以,我设法将Firstname放在它自己的数组中,FIRSTNAME放在它自己的数组中。但后来我的一位同事说:“你为什么不直接使用多维数组?”。这让我思考,将Firstname置于0,将FIRSTNAME置于1中。但我该如何做?

这是我现在的代码:

    For iTeller = 0 To UBound(arrIniName)
        If Not arrIniName(iTeller) = "" Then
            arrIniName(iTeller) = Split(arrIniName(iTeller), "=")(0)
        End If
    Next

    For iTeller = 0 To UBound(arrIniValue)
        If Not arrIniValue(iTeller) = "" Then
            arrIniValue(iTeller) = Split(arrIniValue(iTeller), "=")(1)
        End If
    Next

arrIniName和arrIniValues都包含完全相同的数组。看起来像这样:

arrIniName(0) "Fistname=FIRSTNAME"
arrIniName(1) "Lastname=LASTNAME"
arrIniName(2) "Initials=INITIALS"

所以我基本上按照我现在的方式将每个数据拆分成各自独立的数组。但是把它们放在一个多维数组中可能会更好吗?因为那时我只需要管理一个数组,也可以通过For Each循环拉出该数组。

编辑:我最终这样做,其中Values是数组

For Each s In Values
    Dim strName, strValue
    s = Split(s, "=")
    strName = s(0)
    strValue = s(1)

    'Run function strName, strValue
Next

1 个答案:

答案 0 :(得分:4)

理想的解决方案听起来像Dictionary(一种保存键/值对的数据结构 - 正是INI文件中的内容)。

此处不需要多维数组,因为您只有2个维度(键和值)。数组通常比字典更难处理,因为它们很难调整大小,所以你需要知道你有多少项目。

因此,我建议使用以下代码:

Dim dict As Dictionary
Set dict = new Dictionary
Dim key as String
Dim value as String

For iTeller = 0 To UBound(arrIniValue)
    If Not arrIniValue(iTeller) = "" Then
        key = Split(arrIniValue(iTeller), "=")(0)
        value = Split(arrIniValue(iTeller), "=")(1)
        dict.Add(key, value)
    End If
Next

但是,如果要使用多维数组,则以下内容将执行此操作:

' Declare a 2-dimensional array, of dimensions "n by 2".
Dim results(UBound(arrIniValue), 2) As String

For iTeller = 0 To UBound(arrIniValue)
    If Not arrIniValue(iTeller) = "" Then
        key = Split(arrIniValue(iTeller), "=")(0)
        value = Split(arrIniValue(iTeller), "=")(1)
        results(iTeller, 0) = key
        results(iTeller, 1) = value
    End If
Next