VBA代码建议溢出错误

时间:2017-12-08 17:12:02

标签: vba excel-vba excel

我正在尝试运行一个宏。宏在A列的每一行中查找,如果该值大于0,它将复制同一行(M:BT)中的一系列单元格,并粘贴并转置该行在同一行的K列中的单元格中。下面的代码可以工作,但行数会发生变化并且可能很多。我需要它循环直到在A列中找不到更多数据。请记住,将有空行。正如我之前所说,我的代码使用了100行的小样本,但是当我为65,000行做了一行时,它给了我一个

  

溢出错误

任何想法如何解决这个问题?

Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+w
'
Range("K1").Select
ActiveCell.FormulaR1C1 = "DATE"
Range("L1").Select
ActiveCell.FormulaR1C1 = "DAYS"
Columns("BU:EB").Select
Selection.Delete Shift:=xlToLeft
Columns("EC:IR").Select
Selection.Delete Shift:=xlToLeft
With ActiveSheet
    lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

Dim AddRows As Integer: AddRows = 59

Dim i As Integer: i = lastrow

Do While i <> 1
    Rows(i & ":" & i + AddRows - 1).Insert
    i = i - 1
Loop

ScreenUpdating = True
Rows("2:60").Select
Selection.Delete Shift:=xlUp
Range("A1").Select

Dim x As Integer, a As Integer
a = Cells(Rows.Count, 1).End(xlUp).Row

For x = 2 To a
If Cells(i, 1) > 0 Then
Range(Cells(x, 13), Cells(x, 72)).Select
Selection.Copy
Cells(x, 11).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=True, Transpose:=True
End If
Next x
End Sub

1 个答案:

答案 0 :(得分:2)

整数不够大&#34;保持你的大号。使用Long代替Integer

Dim x As Long, a As Long

参见https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/data-type-summary整数数据类型有2个字节,因此只能保持-32768到+ 32767