Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于VBA上的行号高亮显示单元格_Vba_Excel - Fatal编程技术网

基于VBA上的行号高亮显示单元格

基于VBA上的行号高亮显示单元格,vba,excel,Vba,Excel,我想根据行号更改单元格样式。我还是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

我想根据行号更改单元格样式。我还是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

循环将移动到下一个单元格,但如果满足条件,则不会高亮显示。请你帮帮我。

首先,我想你误用了
行。数一数
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

我建议如下:

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
要测试行号是否为“偶数”,可以使用
如果i Mod 2=0,则不需要测试“奇数”,因为如果行号不是“偶数”,则必须是“奇数”,因此可以使用
Else
,而无需任何标准


尽量避免使用
。选择
,它会使代码变慢。看见相反,直接访问单元格,如
单元格(行、列)

您的条件没有意义。你能解释一下哪些细胞是“好的”,哪些是“坏的”吗?或者给出一个数据示例?我基本上希望所有奇数行号都是“好”的,所有偶数行号都是“坏”的,而不考虑(例如)列a中的数据。如果不是偶数,则不需要第二个标准,它必须是奇数,因此
否则
就足够了,同时使用
。选择
是一种非常糟糕的做法,查看我的答案。我同意,我只是想让它尽可能靠近问题中的代码。因此,您应该使用
I Mod 2=0
来测试偶数,而不是
int(I/2)
,因为Excel的行数超过
Integer
所能处理的行数,因此,如果包含数据的行数超过
Integer
,它将崩溃。如果你处理行数,你必须至少使用
Long
。你们真是太棒了。非常感谢你。我很感激。对不起,伙计们,我如何修改现有的代码来考虑多列呢?对不起,伙计们,如何修改现有代码以将多列也考虑在内?请更清楚多列的含义。因此,当前宏仅在一列上运行,如果我想在a列和B列上使用样式,则必须在两列上分别运行宏。我不想一次只在一列上更改单元格样式,而是想一次在两列或更多列上更改单元格样式。您可以使用
范围(单元格(I,1),单元格(I,5)).Style
为列1到5更改单元格样式,也可以使用
行(I).Style
为整行着色。谢谢您,PEH。我很感激。