gpt4 book ai didi

VBA 宏在 32000 行后崩溃

转载 作者:行者123 更新时间:2023-12-01 17:25:44 25 4
gpt4 key购买 nike

我有一个 VBA 宏,它根据在 3 列单元格中查找值将行从一个工作表复制到另一个工作表中。该宏可以工作,但在到达第 32767 行时崩溃。该行中没有公式或特殊格式。此外,我已经删除了该行,但它仍然在该行号上崩溃。这是 Excel 中的限制吗?正在处理的工作表中约有 43000 个。

因此,我问我的宏出了什么问题以及如何让它到达工作表的末尾:

Dim LSearchRow As Integer
Dim LCopyToRow As Integer
Dim wks As Worksheet
On Error GoTo Err_Execute


For Each wks In Worksheets

LSearchRow = 4
LCopyToRow = 4

ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
Set wksCopyTo = ActiveSheet
wks.Rows(3).EntireRow.Copy wksCopyTo.Rows(3)

While Len(wks.Range("A" & CStr(LSearchRow)).Value) > 0

If wks.Range("AB" & CStr(LSearchRow)).Value = "Yes" And wks.Range("AK" & CStr(LSearchRow)).Value = "Yes" And wks.Range("BB" & CStr(LSearchRow)).Value = "Y" Then

Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
Selection.Copy


wksCopyTo.Select
wksCopyTo.Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
wksCopyTo.Paste

'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
wks.Select
End If
LSearchRow = LSearchRow + 1
Wend

Application.CutCopyMode = False
Range("A3").Select
MsgBox "All matching data has been copied."
Next wks

Exit Sub

Err_Execute:
MsgBox "An error occurred."

最佳答案

VBA“Int”类型是有符号的 16 位字段,因此它只能保存从 -32768 到 +32767 的值。将这些变量更改为“Long”,这是一个带符号的 32 位字段,可以保存从 -2147483648 到 +2147483647 的值。对于Excel来说应该足够了。 ;)

关于VBA 宏在 32000 行后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com