我想根据行号更改单元格样式。我还是VBA的新手。 这是我的代码:
Sub format()
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To FinalRow
If Rows.Count = 2 * i + 1 Then
Selection.Style = "Good"
ElseIf Rows.Count = 2 * i Then
Selection.Style = "Bad"
End If
ActiveCell.Offset(1, 0).Select
Next i
End Sub
循环将移至下一个单元格,但不会突出显示是否满足条件。请你帮我一下。
答案 0 :(得分:3)
我建议以下内容:
Option Explicit
Public Sub FormatEvenOddRowNumbers()
Dim FinalRow As Long
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 1 To FinalRow
If i Mod 2 = 0 Then 'even row number
Cells(i, 1).Style = "Good"
Else 'odd row number
Cells(i, 1).Style = "Bad"
End If
Next i
End Sub
要测试行号是否为“偶数”,您可以使用If i Mod 2 = 0 Then
,也不需要测试“奇数”,因为如果不是奇数,则必须为“奇数”,这样您就可以只需使用Else
而无需任何条件。
尝试避免使用.Select
,这会使您的代码运行缓慢。参见How to avoid using Select in Excel VBA。而是直接像Cells(row, column)
这样访问单元格。
答案 1 :(得分:0)
首先,我认为您误用了Rows.Count
。
Rows.Count
返回工作表的总行数。因此,现在您的条件仅突出显示工作表中间的两行。
如果我正确地假设您想将“好”行放在偶数行中,将“坏”行放在奇数行中。那么您应该将代码更改为以下内容:
Sub format()
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To FinalRow
If i/2 = int(i/2) Then
Selection.Style = "Good"
ElseIf (i+1)/2 = int((i+1)/2) Then
Selection.Style = "Bad"
End If
ActiveCell.Offset(1, 0).Select
Next i
End Sub