对象变量或带块变量未在vba中设置错误

对象变量或带块变量未在vba中设置错误,vba,excel,Vba,Excel,我有下面运行良好的代码。我不知道发生了什么变化,突然出现了错误“Object variable or With block variable not set”(对象变量或块变量未设置) Range(Test(0))=wf.CountIfs(.Rows(1).Find(Test(2),lookat:=xlother).entireclumn,Test(3)) 我的代码: Sub WBR() Dim Count1Criteria As Variant Dim Count3Criteria As V

我有下面运行良好的代码。我不知道发生了什么变化,突然出现了错误“Object variable or With block variable not set”(对象变量或块变量未设置)

Range(Test(0))=wf.CountIfs(.Rows(1).Find(Test(2),lookat:=xlother).entireclumn,Test(3))

我的代码:

Sub WBR()

Dim Count1Criteria As Variant
Dim Count3Criteria As Variant
Dim Test As Variant
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction



Filter1InSummary = Array(Array("AH4", "Latency", "Pass/Fail", "Pass"), _
                         Array("AH5", "Latency", "Pass/Fail", "Fail"), _
                         Array("AH44", "TT", "Able to repro", "Not Tested"), _
                         Array("AH47", "TT", "Reason for Reasssignment/Resolving", "Duplicate TT"), _
                         Array("AH51", "TT", "Able to repro", "Yes"), _
                         Array("AH52", "TT", "Able to repro", "No"), _
                         Array("AH61", "Reactive", "Item Type", "Item"), _
                         Array("AH46", "TT", "Reason for Reasssignment/Resolving", "Hardware Unavailable"), _
                         Array("AH41", "TT", "Severity", "2"), _
                         Array("AH62", "Reactive", "Trigger Key Name", "*App Crashes*"), _
                         Array("AH63", "Reactive", "Trigger Key Name", "*Download*"), _
                         Array("AH49", "TT", "Reason for Reasssignment/Resolving", "Insufficient Information"), _
                         Array("AH15", "Latency", "Comments", "*Waived since unable to repro issue*"), _
                         Array("AH6", "Latency", "Comments", "*Waived since unable to repro issue*"), _
                         Array("AH16", "Latency", "Comments", "*Waived due to business reasons*"), _
                         Array("AH18", "Non-Mhowls", "Type of testing", "Full Testing"), _
                         Array("AH19", "Non-Mhowls", "Type of testing", "Upgrade Testing"), _
                         Array("AH21", "DRG", "Failure testing type", "Normal Testing"), _
                         Array("AH22", "DRG", "Failure testing type", "Deep Testing"))




 For Each Test In Filter1InSummary
    With Worksheets(Test(1))
        Range(Test(0)) = wf.CountIfs(.Rows(1).Find(Test(2), lookat:=xlWhole).EntireColumn, Test(3))
    End With
Next

您忘记了使用
工作表(测试(1))
范围(测试(0))进行全面的量化

更改您的线路:

Range(Test(0))=wf.CountIfs(.Rows(1).Find(Test(2),lookat:=xlother).entireclumn,Test(3))

致:

.Range(Test(0)).Value=wf.CountIfs(.Rows(1).Find(Test(2),lookat:=xlother).EntireColumn,Test(3))


注意:我添加了
作为良好的编码实践,没有必要

我修复了错误。其中一列在我测试的测试数据中不存在


一旦我找出丢失的数据并添加,问题就得到了解决

大概它没有找到一个值?您只指定了一个参数,这可能没有帮助。一个参数?你能用外行的术语解释吗?我需要提供什么信息来找出这里的错误?请逐步检查代码以检查发生了什么。如果您认为某个值存在,但没有找到它,则可能是由于Find的某个参数。查看VBA帮助或eg(顺便说一句,我认为您只需要CountIf。)@stackmark关于如何通过多个
工作表实现多个
CountIfs
的好主意,请参阅下面的我的答案感谢建议@Shai Rado。但是,即使在我添加了建议的行之后,我在相同的代码中也会出现相同的错误……如果指定的任何列/工作表不存在,是否会发生此错误?