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放在哪里,该放什么。我已经写了一篇文章,你说它对你有用。我认为这改变了情况。最好把你的要求放在一个新问题上。