1
我想通过使用VBA来突出显示具有与单元格匹配的值的行,从而节省了我一些时间。我可以让它在单行上工作,但希望它在一个循环上工作以捕获〜97行。Excel条件格式VBA循环
匹配的值是在细胞A4中栏U7:U97,因此突出显示范围( “E7:K7,M7:S7,U7:V7”)
我的代码是:
Sub Macro1()
Range("E7:K7,M7:S7,U7:V7").Select
Range("U7").Activate
Application.CutCopyMode = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$U$7=$A$4"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0.249946592608417
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
这对第7行可以正常工作,我可以剪切并粘贴它并手动更改下一行的值,但必须有方法在循环中运行此操作。
我尝试以下不工作,
Sub Macro2()
For i = 7 To 97
Sheet2.Cells(i, "E").Select
Sheet2.Cells(i, "F").Select
Sheet2.Cells(i, "G").Select
Sheet2.Cells(i, "H").Select
Sheet2.Cells(i, "I").Select
Sheet2.Cells(i, "J").Select
Sheet2.Cells(i, "K").Select
Sheet2.Cells(i, "L").Select
Sheet2.Cells(i, "U").Activate
Application.CutCopyMode = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=Sheet2.Cells(i, 21)=$A$4"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0.249946592608417
End With
Selection.FormatConditions(1).StopIfTrue = False
Next i
End Sub
你为什么要使用VBA,而不是条件格式没有它?另外,有什么不适用于代码?错误是否被抛出?什么错误,在哪里?此外,您可以通过[避免使用'.Select /'.Activate']来帮助收紧代码[(https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in- Excel的VBA的宏)。 (例如,在'Macro2'中,选择列E到K的行不会做任何事情,因为您最后选择列L,并且变成'选择')。 – BruceWayne