繼我的上一個問題 Search String in Spreadsheet and Highlight,我能夠讓單元格在VBA中爲excel突出顯示。我的VBA代碼搜索工作表以查找特定單詞並突出顯示包含這些單詞的單元格。Sheet2.Range類型不匹配錯誤字符串搜索
我的問題是,當我嘗試做一個列表搜索,我得到一個type mismatch error
。所以我在Sheet 2中查詢的「數組」列表中的值標記了一個錯誤。
表2列出:
如果我硬編碼我的搜索字符串它工作雖然。
因此,如何讓我的數組列表在我的下列代碼中取代"Remedy"/"Internet ..etc"
的(InStr(item_sum, "Remedy"))
等等?
我在我的代碼硬編碼字符串如下:
Private Sub CommandButton1_Click()
'Query = Sheet2.Range("A:A")
Do
DoEvents
row_num = row_num + 1
Sheet1.Range("B" & row_num & ":E" & row_num).Interior.Color = xlNone
item_sum = Sheet1.Range("B" & row_num)
item_note = Sheet1.Range("C" & row_num)
item_group = Sheet1.Range("E" & row_num)
If (InStr(item_sum, "Remedy")) Then
Sheet1.Range("B" & row_num).Interior.Color = RGB(255, 255, 0)
End If
If (InStr(item_sum, "Internet") Or InStr(item_sum, "internet")) Then
Sheet1.Range("B" & row_num).Interior.Color = RGB(255, 255, 0)
End If
If InStr(item_note, "Remedy") Then
Sheet1.Range("C" & row_num).Interior.Color = RGB(255, 255, 0)
Else
Sheet1.Range("C" & row_num).Interior.Color = xlNone
End If
If InStr(item_group, "Remedy") Then
Sheet1.Range("D" & row_num).Interior.Color = RGB(255, 255, 0)
End If
Loop Until item_sum = ""
End Sub
正如你可以看到我試過行:Query = Sheet2.Range("A:A")
搜查像這樣:If (InStr(item_sum, Query)) Then
,但沒有奏效。
UPDATE:
所以我一直在玩動態域名。到目前爲止,我從Sheet2的列表中獲取字符串以顯示在MsgBox中進行調試。但是,當它運行時,它會突出顯示「Remedy」的B2單元,但沒有其他。但我可以告訴我的UCase(Sheet2.Range("A" & Count).Value)
顯示列表中的每一個。仍然只有B2細胞的顏色?當我逐行解碼時,它似乎只在Sheet2的列表中註冊最後一個字符串搜索,即「Remedy」,因此只突出顯示B2。
Private Sub CommandButton1_Click()
row_num = 1
Dim query_list As Range
Set query_list = Sheet2.Range("A:A")
'MsgBox "Number of Rows are " & WorksheetFunction.CountA(query_list)
list_count = WorksheetFunction.CountA(query_list)
row_num = row_num + 1
Sheet1.Range("B" & row_num & ":E" & row_num).Interior.Color = xlNone
Sheet1.Range("I" & row_num).Value = ""
item_sum = Sheet1.Range("B" & row_num)
item_note = Sheet1.Range("C" & row_num)
item_group = Sheet1.Range("E" & row_num)
For Each list In query_list
Count = Count + 1
If (Count <= list_count) Then
'ALL QUERIES FOR COLUMN B
MsgBox UCase(Sheet2.Range("A" & Count).Value)
If (InStr(UCase(item_sum), UCase(Sheet2.Range("A" & Count).Value))) Then
Sheet1.Range("B" & row_num).Interior.Color = RGB(255, 255, 0)
Sheet1.Range("I" & row_num).Value = "Yes"
End If
End If
Next