gpt4 book ai didi

excel - 以下 Excel 2010 VBA 出现溢出错误 6

转载 作者:行者123 更新时间:2023-12-02 13:38:38 27 4
gpt4 key购买 nike

以下代码将按照我想要的方式正确格式化我的模板。但是,如果模板为空并且用户点击工作表上的准备上传按钮,我将收到溢出错误 6。有什么方法可以删除导致此错误的原因吗?

    Sub PrepForUpload()

Dim cel As Range, rng As Range

Set rng = Range("A2", Range("A65536").End(xlUp))

For Each cel In rng

If cel.Value = "" Then

If cel.Offset(, 2).Value = "" Then
cel.EntireRow.Delete

End If

End If

Next cel

Dim rowNumber As Integer
With Sheets("Initiatives")

If Len(.Cells(2, 1)) = 0 Then

rowNumber = .Cells(2, 1).End(xlDown).End(xlDown).Row + 1

Else: rowNumber = .Cells(2, 1).End(xlDown).Row + 1

End If

.Rows(rowNumber & ":" & .Rows.Count).Clear

End With


End Sub

调试指向以下行作为问题:

rowNumber = .Cells(2, 1).End(xlDown).End(xlDown).Row + 1

谢谢

瑞恩

最佳答案

您会溢出,因为 Integer在VBA中是一个16位有符号数(最大值为32767)。无论 Excel 版本如何,您至少有 65535 行,如果使用 XLSX 文件格式,很可能会更多。您需要更改rowNumberLong

您还必须围绕空白工作表场景进行编码。当您调用此线路时:

rowNumber = .Cells(2, 1).End(xlDown).End(xlDown).Row + 1

并且工作表是空白的,.End(xlDown)将返回工作表中最后可能的行,在 Excel 2010(和 Excel 2007)的情况下为 1048576。一旦更改 rowNumberLong您将不再收到溢出错误,但您会遇到此行的问题:

.Rows(rowNumber & ":" & .Rows.Count).Clear

这是因为您尝试选择不存在的范围(第 1048577 行)(因此类型不匹配)。您需要添加一行代码来解决这种情况。要么首先检查空白工作表,要么检查行 > 1048576。

最简单的方法就是添加一行来检查:

If rowNumber <= 1048576 Then
.Rows(rowNumber & ":" & .Rows.Count).Clear
End If

关于excel - 以下 Excel 2010 VBA 出现溢出错误 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12624454/

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