您好我正在编写难以执行此代码的代码
Column E row 40 :
P0.1,
P0.2,
P0.6 etc.
Column I row 39 :
a2.0,
P0.1,
P0.2,
P0.3.
Column J row 39 :
b2.0,
P0.5,
P0.2,
P0.1.
相似的10列。
所以我写了一个VBA,如果第40行的第一个单元格我是红色。比我检查列E行40到行50 和第I列第40行之间的重复值。
即如果第40行我是红色而不是输出
Column E row 40 :
P0.1(SOME COLOR INDICATING DUPLICATE VALUE),
P0.2(SOME COLOR INDICATING DUPLICATE VALUE),
P0.3 etc.
Column I row 39 :
a2.0(red color which is a condition),
P0.1(SOME COLOR INDICATING DUPLICATE VALUE),
P0.2(SOME COLOR INDICATING DUPLICATE VALUE),
P0.6.
为此,我编写的代码工作正常。
即
enter Public Sub nextphase33()
Dim wsPaste As Worksheet
Dim wsFind As Worksheet
Dim j As Long, i As Long
Set wsFind = ActiveWorkbook.Sheets(6)
For j = 9 To 33
If wsFind.Cells(39, j).Interior.Color = RGB(255, 0, 0) Then
Range("E40:E46,I40:I73").Select
Range("I40").Activate
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 150
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Else
j = j + 1
End If
Next j
End Sub here
现在我的问题是范围是固定的。
如果列中的红色,我将比较列e和列i
现在我想添加一个循环如果第一行列i不是红色它应该检查列j中的红色是这样比较并突出显示重复值列E行40和列j行40之间即可。 我的代码中没有发生这种情况,请帮助我如何使范围动态。
答案 0 :(得分:0)
我认为你应该使用R1C1参考样式而不是A1来选择范围,所以假设我们把这样的工作表别名:
dim wsFind as worksheet: set wsFind = activeWorkbook.sheets(6)
原始代码中的范围选择如下所示:
wsFind.range(wsFind.cells(40,5), wsFind.cells(73,9))
wsFind.cells(40,9).Activate
您可以使用变量col
作为列号,然后将其更改为:
wsFind.range(wsFind.cells(40,5), wsFind.cells(73,col))
wsFind.cells(40,col).Activate
然后您可以使用if子句检查内部颜色以设置col
值,或者如果您打算将受影响的列设置为小于j
,则需要执行所有操作我开始使用j-1
col
。