遍历工作表和单元格以查找值和运行时错误13类型不匹配

时间:2018-08-14 23:56:42

标签: excel-vba

我想实现的目标是编写一些代码,这些代码将循环遍历这些工作表的所有工作表和行,直到找到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用黄色突出显示。

1 个答案:

答案 0 :(得分:0)

您需要将Sheet1Sheet2Sheet3更改为您不希望此代码在其上运行的工作表的名称。

您似乎正在尝试遍历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