2016-09-27 74 views
0

我是VBA的新手(有点),我被分配了搜索5000行以基于单元格值突出显示行(从color到index = 6的A到j)的繁琐任务它永远带着我。基本上我试图开发一个程序来搜索C列下的字符串,如果该单元格等于搜索的字符串,则将其偏移到活动单元格下方的4行以及任何大于37的数字,并在找到单元格与索引颜色成一排33.任何想法?我开始了,现在卡住了。任何想法都会有帮助。由于仅搜索颜色索引内的行

Sub Priority() 

'Declaring all worksheets in the excel file 
Dim US As Worksheet 
Dim Venr50 As Worksheet 
Dim Priority As Worksheet 
Dim CBT As String 

'setting all variables declared 
Set US = Worksheets("US CKS") 
Set Venr = Worksheets("VENR50 US 09.24") 
Set Priority = Worksheets("Priority") 

CBT = Priority.Range("$C$6").Value 

With US 

Dim x As Long 

For x = 4 To 3000 

If Cells(x, "C").Value = CBT Then 

ActiveCell.Interior.ColorIndex = 33 
ActiveCell.Offset(4, 0).Select 

End If 
+0

当你找到CBT,你想为它着色33,然后偏移4行?那么你是否希望循环检查CBT从该偏移行开始?如果是这样,你应该增加x。在你结束之后,你需要一个Next x来完成你的外观。 –

+0

我希望它找到已经是colorindex 33的CBT(范围C),然后开始搜索大于37行下面37行(仍在范围C内)的数字并突出显示它的colorindex 6(从A到J),直到它遇到一个单元colorindex = 33.并停下来。 –

回答

0

你可以做你在另一个循环For循环如下图所示:

Dim x As Long 
Dim j as integer 

For x = 4 To 3000 

If Cells(x, "C").Value = CBT Then 

    For j=1 to 4 
     If Cells(x+j,"C").Value>37 then Cells(x+j,"C").ColorIndex = 6 
     If Cells(x+j,"C").Interior.ColorIndex = 33 then exit sub 
    Next j 

End If 

If Cells(x+j,"C").Interior.ColorIndex = 33 Then Exit Sub 

Next x 

编辑: 要更改多行的显色指数,你可以使用:

Range(Cells(x+j,"A"),Cells(x+j,"J")).Interior.ColorIndex = 6 
+0

谢谢!我想知道为什么在前和后j语句中,你没有包括结束,如果是?我以为你总是必须包括他们。 –

+0

当If语句只有一个动作时,可以将它放在与then关键字相同的行上。否则,如果你在if语句中有多个事情要做,你可以把它们放在额外​​的行中并包含End If。您仍然可以将它们放在单独的行中,并且使用End If来提高自己的可读性。 –

+0

有没有办法突出颜色索引6从a到j而不是那个单元格? –