下面的简短程序应循环浏览工作簿中的所有工作表,并将(C11:end)单元格中的值与该行的B列中的单元格进行比较,然后对下面的每一行重复此操作数据。
由于“溢出”错误,代码将无法运行,这意味着变量NumRows对于整数类型太大(我认为呢?)。但是,尽管每个表的NumRows和NumCols有所不同,但在每种情况下总是小于100。将类型更改为“ Long”会导致Excel挂起。我不确定为什么会这样,C11总是在右侧和底部受到数据的限制,因此.End函数不应生成大量数字。
我对此非常陌生,所以如果有人可以解释或建议修改,我将不胜感激。
Sub cond_format()
Application.ScreenUpdating = False
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Activate
Dim i As Integer
Dim j As Integer
Dim NumRows As Integer
Dim NumCols As Integer
NumRows = ws.Range("C11", ws.Range("C11").End(xlDown)).Rows.Count
NumCols = ws.Range("C11", ws.Range("C11").End(xlToRight)).Columns.Count
For i = 1 To NumRows
For j = 1 To NumCols
If Cells(10 + i, 2 + j).Value >= (Cells(i + 10, 2).Value) * 1.2 Then
Cells(10 + i, 2 + j).Interior.Color = 10092492
ElseIf Cells(10 + i, 2 + j).Value <= (Cells(i + 10, 2).Value) * 0.8 Then
Cells(10 + i, 2 + j).Interior.Color = 5263615
End If
Next
Next
Next ws
End Sub