【问题标题】:VBA How to declare an array with elements with different datatypeVBA如何声明具有不同数据类型元素的数组
【发布时间】:2012-10-25 12:54:20
【问题描述】:

我创建了一个数组来存储错误记录,它包含以下元素: 序列号、文件名、错误类型、错误单元格、错误单元格值

到目前为止,我已经像这样声明了我的数组,然后我稍后会填充这些值。

Dim errorArray() As String

但理想情况下,我希望序列号是一个正确的整数,但它正在转换为字符串。我不知道如何正确声明这一点,以便我可以将 Long 数据类型用于第一个元素,将字符串用于下一个 3 和变体用于最后一个。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在您的代码中创建一个私有类型,如下所示:

    Private Type ErrRecord
        SerialNo As Long
        FileName As String
        ErrorType As String
        ErrorCell As String
        ErrorCellValue As Variant
    End Type
    

    然后在你的例程中,这样称呼它:

    Dim errorArray(0) As ErrRecord
    With errorArray(0)
        .SerialNo = 12345
        .FileName = "Test.xls"
        .ErrorType = "Bad error"
        .ErrorCell = "1234"
        .ErrorCellValue = "Test"
    End With
    

    【讨论】:

    • 如果我想要一个动态数组怎么办。就像我存储从数据库检索的数据一样,列的数据类型可能不同。
    • 应该是公认的答案。干净整洁的解决方案。
    【解决方案2】:

    您需要创建一个 Variant 类型的数组。 Variant 类型的数组可以在其任何元素中存储任何数据类型。

    Dim astrItems(0 To 9)    As String
    Dim varItems             As Variant
    
    varItems = astrItems
    

    【讨论】:

    • 如此明显,但我错过了。事实上,我在想我声明了一个 Variant 类型的数组,所以当我看到你的回复时,我有点困惑。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多