VBA中的动态范围更改

时间:2015-02-06 14:34:10

标签: excel vba excel-vba excel-2007

您好我正在编写难以执行此代码的代码

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之间即可。 我的代码中没有发生这种情况,请帮助我如何使范围动态。

1 个答案:

答案 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