由于长数据类型导致的VBA-Excel溢出错误

时间:2013-03-22 08:34:59

标签: vba excel-vba excel

这似乎太容易了,但我非常绝望。

我需要做的是获取“D”列的最后一个值,该列

数量大,例如987654321,如果该值仅为两位数,则代码正常。我只是无法确定问题。

Dim lastRow As Long
lastRow = Cells(Rows.Count, "D").End(xlUp).Value
Sheets("Sheet1").TxtBox1.Value = lastRow

2 个答案:

答案 0 :(得分:12)

就像我在评论中提到的那样,对于如此大的数字,你必须将它声明为双。

Dim lastRow As Double

或者,因为你想将它存储在文本框中,你可以做两件事

  1. 将其声明为字符串
  2. 将其直接存储在文本框中。

    Option Explicit
    
    Sub Sample1()
        Dim lastRow As String
    
        With Sheets("Sheet1")
            lastRow = .Cells(.Rows.Count, "D").End(xlUp).Value
            .TextBox1.Value = lastRow
        End With
    End Sub
    
    Sub Sample2()
        With Sheets("Sheet1")
            .TextBox1.Value = .Cells(.Rows.Count, "D").End(xlUp).Value
        End With
    End Sub
    

答案 1 :(得分:4)

Long只能处理高达2.1B的值!对于任何较大的值,最好使用Double而不是Long