Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Excel 如何在进行更改时突出显示Exel黄色的线条和红色的单元格(有多个更改)_Excel_Row_Cell_Highlight - Fatal编程技术网

Excel 如何在进行更改时突出显示Exel黄色的线条和红色的单元格(有多个更改)

Excel 如何在进行更改时突出显示Exel黄色的线条和红色的单元格(有多个更改),excel,row,cell,highlight,Excel,Row,Cell,Highlight,在对单元格进行更改时,我使用以下公式突出显示一行黄色和单元格红色。问题是,有时我们希望对一行进行多个更改,并希望所有发生更改的单元格保持红色,但此公式在更改行中的第二个单元格时会清除第一个红色单元格。我是否可以添加一些例外,以防止在进行第二次更改时,已经存在的红细胞变为黄色 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Cells.Count > 1 Then Ex

在对单元格进行更改时,我使用以下公式突出显示一行黄色和单元格红色。问题是,有时我们希望对一行进行多个更改,并希望所有发生更改的单元格保持红色,但此公式在更改行中的第二个单元格时会清除第一个红色单元格。我是否可以添加一些例外,以防止在进行第二次更改时,已经存在的红细胞变为黄色

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
    Target.EntireRow.Interior.Color = vbYellow
    Target.Interior.Color = vbRed
End Sub
请尝试此代码

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    Dim Cl      As Long                 ' last used column

    With Target
        If .CountLarge = 1 Then
            ' change .Row to longest used row number
            ' if your rows aren't of uniform length
            If Sh.Cells(.Row, "A").Interior.Color <> vbYellow And _
               Sh.Cells(.Row, "A").Interior.Color <> vbRed Then
                Cl = Sh.Cells(.Row, Columns.Count).End(xlToLeft).Column
                Sh.Range(Sh.Cells(.Row, 1), Sh.Cells(.Row, Cl)).Interior.Color = vbYellow
            End If
            .Interior.Color = vbRed
        End If
    End With
End Sub
Private子工作簿\u SheetChange(ByVal Sh作为对象,ByVal Target作为范围)
尺寸Cl为“最后使用的长”列
有目标
如果.CountLarge=1,则
'将.Row更改为使用时间最长的行号
'如果您的行长度不一致
如果是Sh.Cells(.Row,“A”).Interior.Color vbYellow和_
Sh.Cells(.Row,“A”).Interior.Color vbRed然后
Cl=Sh.Cells(.Row,Columns.Count).End(xlToLeft).Column
Sh.Range(Sh.Cells(.Row,1),Sh.Cells(.Row,Cl)).Interior.Color=vbYellow
如果结束
.Interior.Color=vbRed
如果结束
以
端接头
上述程序未经测试。事实上,我想知道为什么要使用工作簿事件。然而,我确实测试了下面的函数,也许这就是您所需要的

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Cl      As Long                 ' last used column

    With Target
        If .CountLarge = 1 Then
            ' change .Row to longest used row number
            ' if your rows aren't of uniform length
            If Cells(.Row, "A").Interior.Color <> vbYellow And _
               Cells(.Row, "A").Interior.Color <> vbRed Then
                Cl = Cells(.Row, Columns.Count).End(xlToLeft).Column
                Range(Cells(.Row, 1), Cells(.Row, Cl)).Interior.Color = vbYellow
            End If
            .Interior.Color = vbRed
        End If
    End With
End Sub
Private子工作表\u更改(ByVal目标作为范围)
尺寸Cl为“最后使用的长”列
有目标
如果.CountLarge=1,则
'将.Row更改为使用时间最长的行号
'如果您的行长度不一致
如果单元格(.Row,“A”).Interior.Color vbYellow和_
单元格(.Row,“A”).Interior.Color vbRed
Cl=单元格(.Row,Columns.Count).End(xlToLeft).Column
范围(单元格(.Row,1),单元格(.Row,Cl)).Interior.Color=vbYellow
如果结束
.Interior.Color=vbRed
如果结束
以
端接头

要编程的逻辑是高亮显示黄色,除非它已经是黄色。测试一个单元格的颜色是否不会改变。不,如果单元格已经是红色,我不想突出显示黄色。太好了!请将答案标记为选中,以便其他人可以从您的测试工作中受益。如何将其标记为选中?还有一个问题也许你能帮上忙。当我复制一个单元格并将其粘贴到另一个单元格时,它会高亮显示整行的黄色和红色单元格&允许一行中有多个红色单元格,这一点我很喜欢,但是如果我复制多个单元格并将其粘贴到另一个区域,它会使更改的单元格变为红色,但行不会高亮显示为黄色。你知道我怎样才能做到吗?我尝试过,但失败了。答案左上角有一个勾选标记,您可以单击该标记选择答案。查看代码行
如果.CountLarge=1,则
。这意味着当您粘贴多个单元格时,以下代码将不会运行。因此,红色是复制的,而不是应用的,黄色是不应用的,因为代码没有运行。考虑向现有的<代码>如果< <代码>添加<代码> EX/<代码>,并告诉代码该怎么做。你不能只删除
If
,因为所有粘贴的单元格都会变成红色。嗨,Variatus,你能帮我写下sub吗?我不知道该把Else放在哪里,该放什么。我已经写了一篇文章,你说它对你有用。我认为这改变了情况。最好把你的要求放在一个新问题上。