[英]How can I solve an overflow error in vba?
我必須分析一個非常大的數據文件並獲取一些數據並將其放入另一個工作表中,它可以工作到我有大約 20,000 行,但之后它給了我一個溢出錯誤,我需要它來分析大約 200,000 行,是否可以?
Sub prueba()
Dim i As Double, j As Double, k As Double, l As Double
Dim i2 As Double
Dim lrow As Integer
Dim LastRow As Double
lrow = Cells(Rows.Count, 1).End(xlUp).Row
LastRow = Range("E" & Rows.Count).End(xlUp).Row
i = 1
While Sheet1.Cells(18, i) <> "Suma de Máximo"
i = i + 1
Wend
j = 1
While Sheet1.Cells(18, j) <> "Suma de Stock"
j = j + 1
Wend
k = 1
While Sheet1.Cells(18, k) <> "Sum of Mínimo"
k = k + 1
Wend
If Sheet1.Cells(18, k) = "Sum of Mínimo" And Sheet1.Cells(18, j) = "Suma de Stock" Then
For i2 = 18 To LastRow - 1
If Sheet1.Cells(i2, k) <> Sheet1.Cells(i2, j) Then
Sheet2.Cells(i2 - 17, 1) = Sheet1.Cells(i2, 1)
Sheet2.Cells(i2 - 17, 2) = Sheet1.Cells(i2, 2)
Sheet2.Cells(i2 - 17, 3) = Sheet1.Cells(i2, i)
Sheet2.Cells(i2 - 17, 4) = Sheet1.Cells(i2, k)
Sheet2.Cells(i2 - 17, 5) = Sheet1.Cells(i2, j)
End If
Next i2
End If
End Sub
Dim lrow As Integer
這是一個 16 位有符號整數類型,最大值為 32,767 (2^15-1):一旦將其分配給 32,768 或更高,它就會溢出。 任何工作表的行數都比這多很多倍,這使得Integer
不適合用於存儲工作表行號的數據類型。
改用Long
,它是一個 32 位有符號整數類型,最大值為 2^31-1,這比 Excel 工作表的行數還多。
Double
是一種浮點數據類型,用於行號沒有多大意義。 考慮使用有意義的名稱而不是單字母變量,但請注意,這些循環效率極低:
k = 1 While Sheet1.Cells(18, k) <> "Sum of Mínimo" k = k + 1 Wend
當您需要快速定位具有特定內容的單元格時,請使用Range.Find
。
代替:
Dim i As Double, j As Double, k As Double, l As Double
Dim i2 As Double
Dim lrow As Integer
Dim LastRow As Double
和:
Dim i As Long, j As Long, k As Long, l As Long
Dim i2 As Long
Dim lrow As Long
Dim LastRow As Long
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.