溢出警告VBA

时间:2017-12-04 14:47:38

标签: 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

        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

cell和Row都声明为Variant。

代码是由其他人编写的,警告不会出现在我的系统中。该错误正在其他一些系统中出现。

如果代码中有错误或任何其他方式停止收到此消息,请告诉我。

2 个答案:

答案 0 :(得分:2)

此行发生错误:

ActiveCell.Value = CInt(ActiveCell.Value)

CInt 只能处理-32,768到32,767之间的值。
检查您的数据类型here,找出哪个更符合您的要求

答案 1 :(得分:0)

试试这个。避免使用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