Excel 溢出警告VBA

Excel 溢出警告VBA,excel,vba,Excel,Vba,我在运行以下代码片段时收到溢出警告: For Each Row In Rng.Rows For Each cell In Row.Cells cell.Activate ActiveCell.Select If IsNumeric(ActiveCell) Then ActiveCell.Value = CInt(ActiveCell.Value) End If Selec

我在运行以下代码片段时收到溢出警告:

For Each Row In Rng.Rows

    For Each cell In Row.Cells

        cell.Activate

        ActiveCell.Select

        If IsNumeric(ActiveCell) Then

            ActiveCell.Value = CInt(ActiveCell.Value)

        End If

        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="=1"

        Selection.FormatConditions

        (Selection.FormatConditions.Count).SetFirstPriority

        With Selection.FormatConditions(1).Interior.ColorIndex = 20

        End With

        Selection.FormatConditions(1).StopIfTrue = False

    Next cell

Next Row
单元格和行都声明为变量

代码是由其他人编写的,警告不会出现在我的系统中。这种错误在其他系统中很少出现


请让我知道代码中是否有错误或以任何其他方式停止接收此消息。

尝试使用此方法。避免使用
Select
语句。它可能会导致很多错误(我怀疑这就是导致您的错误的原因)。而且,实现这一点不需要两个循环

For Each cell In rng.cells
    If IsNumeric(cell) Then cell.Value = CLng(cell.Value)
    With cell
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=1"
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        .FormatConditions(1).Interior.ColorIndex = 20
        .FormatConditions(1).StopIfTrue = False
    End With
Next cell

错误发生在这一行:

ActiveCell.Value = CInt(ActiveCell.Value)
CInt
只能处理-32768到32767之间的值。

检查您的数据类型,找出哪一种更适合您的要求

此代码单独分配条件格式规则,以检查每个单元格是否等于1。虽然代码在技术上不是无效的,但效率极低。这里的最终目标是什么?只是将小数转换成整数,然后突出显示任何结果为1的内容?另外,您确定这行是正确的吗?(Selection.FormatConditions.Count).SetFirstPriority溢出警告是什么意思?这通常是一个很大的错误。我可以打赌大约一半的虚拟啤酒,你在错误恢复下一步的某个地方。这是真的吗?错误只出现在少数几个系统上?它是否用于Excel 2003和Excel 2007+的混合(2010、2013等)。我的第一个猜测是@SeanC已经回答了,但是在所有这些
ActiveCell
Select
的情况下,它可能试图从2003年的工作表底部选择一行(这将在2007年生效).这似乎是一个不错的猜测--但考虑到这个问题,我看不出你怎么能确定。这是我能看到的唯一一行代码会在给定代码中导致溢出错误,这是真的,但我怀疑@vityta是正确的,接下来有一个错误,使得OP猜测问题嫌疑人的位置。