如何在VBA计数功能中引用多张纸的范围?

问题描述

Vba初学者在这里我有一个名为“ Dane”的工作簿,其中有工作表,必须在每个工作表中搜索特定的行。这些行不能包含我的宏工作簿的A列中的值,并且将在特定列中以“ 1”突出显示。我使用嵌套循环-外部用于工作表,内部用于行。问题是:1仅在第一张纸上显示。当我添加'Dane.Worksheets(i)'时。在“ prodRange(x,1)”错误“对象不支持属性方法”之前发生。

Dim Dane As Workbook
Set Dane = Workbooks("something.xlsx")
Dim prodRange As Range
Set prodRange = Range("A18:I92")

For i = 4 To 23
       Dane.Worksheets(i).Activate
       For x = 2 To 75
         If Application.WorksheetFunction.CountIf(ThisWorkbook.Sheets("Top").Range("A:A"),prodRange(x,1)) = 0 Then
         prodRange(x,1).Offset(0,17) = 1
         End If
       Next
Next

解决方法

当您:

Set prodRange = Range("A18:I92")

已设置父表。设置为在设置对象时处于活动状态的工作表。

因此将其移入第一个循环。

Dim Dane As Workbook
Set Dane = Workbooks("something.xlsx")

For i = 4 To 23
    Dim prodRange As Range
    Set prodRange = Dane.Worksheets(i).Range("A18:I92")
    For x = 2 To 75
        If Application.WorksheetFunction.CountIf(ThisWorkbook.Sheets("Top").Range("A:A"),prodRange(x,1)) = 0 Then
        prodRange(x,1).Offset(0,17) = 1
        End If
    Next
Next