我想实现的目标是编写一些代码,这些代码将循环遍历这些工作表的所有工作表和行,直到找到combobox(cmbPrdcde.value)的值为止,并且仅用于测试目的,找到该单元格后对其进行着色红色。 我在Microsoft网站上找到了以下代码。该代码循环遍历所有工作表。
Dim WS_Count As Integer
Dim i As Integer
WS_Count = Workbooks(ActiveWorkbook).Worksheets.Count
For i = 1 To WS_Count
Code Here
Next i
我想将下面的代码与之合并,使其看起来像下面的代码:
Dim WS_Count As Integer
Dim i As Integer
If cmbPrdCde.Value <> " " Then
WS_Count = Workbooks(ActiveWorkbook).Worksheets.Count
For i = 4 To WS_count
If Cells(x, 2) = cmbPrdCde.Value Then
Cells(x, 2).Interior.ColorIndex = 3
End If
Next i
End If
第4页开始保存信息。 但是,当我运行代码时,出现运行时错误“ 13”类型不匹配 和WS_count = Workbooks(ActiveWorkbook).Worksheets.Count用黄色突出显示。
答案 0 :(得分:0)
您需要将Sheet1
,Sheet2
和Sheet3
更改为您不希望此代码在其上运行的工作表的名称。
您似乎正在尝试遍历Column B
,因此以下代码将检查所有工作表上的ComboBox
值-上面的3除外-从{ {1}},直到该列中最后使用的单元格为止。
此外,您似乎正在测试B2
,它正在测试该值是否等于空格。假设您要查找空格,则应为“””,这就是我更新的代码。
ComboBox.Value <> " "
您可以通过在循环前切换屏幕更新并在结束子操作之前重新启用屏幕来提高运行时间:
{Sub Find_Me()
Dim ws As Worksheet, i
If cmbPrdCde.Value <> "" Then
For Each ws In Worksheets 'Loop through Sheets
If ws.Name <> "Sheet1" And ws.Name <> "Sheet2" And ws.Name <> "Sheet3" Then
For i = 2 To ws.Range("B" & ws.Rows.Count).End(xlUp).Row 'Loop through Rows
If ws.Range("B" & i) = cmbPrdCde.Value Then
ws.Range("B" & i).Interior.Color = vbRed
End If
Next i
End If
Next ws
End If
End Sub
然后Application.ScreenUpdating = False