对象变量或带块变量未在vba中设置错误
我有下面运行良好的代码。我不知道发生了什么变化,突然出现了错误“Object variable or With block variable not set”(对象变量或块变量未设置)对象变量或带块变量未在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
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。但是,即使在我添加了建议的行之后,我在相同的代码中也会出现相同的错误……如果指定的任何列/工作表不存在,是否会发生此错误?