首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA数据类型不匹配

VBA数据类型不匹配
EN

Stack Overflow用户
提问于 2018-04-13 02:13:43
回答 2查看 56关注 0票数 2

我正在使用日期作为我的数据,我认为这可能会导致一些问题。

代码语言:javascript
复制
Sub test()

    Dim counter As Long
    For counter = 1 to 10

        Dim fltArr(0 to 9)
        Dim X 
        Dim Largest As Date

        For items = 3 to 12
        fltArr(items-3) = Cells(items, 6)
        Next

        X = fltArr
        Largest = Application.Large(X, counter)

    Next
End Sub

行中似乎出现了不匹配错误

代码语言:javascript
复制
Largest = Application.Large(X, counter)

我认为这可能是由于Application.Large给出了一个整数而不是日期。我该怎么解决这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2018-04-13 03:21:01

Value2属性和Value属性之间的唯一区别是Value2属性不使用CurrencyDate数据类型。通过使用Double数据类型,可以将使用这些数据类型格式化的值返回为浮点数。Reference

您所要做的就是更改行

代码语言:javascript
复制
fltArr(items-3) = Cells(items, 6)

代码语言:javascript
复制
fltArr(items-3) = Cells(items, 6).Value2

尝尝这个

代码语言:javascript
复制
Sub test()
    Dim counter As Long
    Dim Largest As Date

    For counter = 1 To 10
        Dim fltArr(0 To 9) As Variant
        Dim X As Variant

        For items = 3 To 12
            fltArr(items - 3) = Cells(items, 6).Value2
        Next

        X = fltArr

        Largest = Application.Large(X, counter)
        Debug.Print Largest
    Next
End Sub
票数 2
EN

Stack Overflow用户

发布于 2018-04-13 03:08:26

Large不喜欢使用日期数组。如果您将数组声明为doubles,它将返回您想要的值(使用您的代码):

代码语言:javascript
复制
Sub test()

    Dim counter As Long
    For counter = 1 To 10

        Dim fltArr(0 To 9) As Double
        Dim X() As Double
        Dim Largest As Date

        For items = 3 To 12
        fltArr(items - 3) = Cells(items, 6)
        Next

        X = fltArr
        Largest = Application.Large(Range("F3:F12"), counter)
        Debug.print Largest

    Next
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49803381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档