2016-09-27 57 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而不是那個單元格? –