我必须写为以下情形的宏得到perticular对象的数量。工作表包含带有测试用例和测试状态的模块名称。我必须将测试用例与特定模块的测试状态统称为“Mod1”。如何通过检查两个条件
Module Test Case ID Status
Mod1 123 Pass
Mod2 124 Fail
Mod1 125 Fail
Mod1 126 Blocked
Mod5 127 Pass
Mod1 128 NA
我所编写的代码是如下:
Sub testnw()
Dim k, l, ps, fl, bl, na As Integer
Dim frng As Range
ps = 0
fl = 0
bl = 0
na = 0
frng = Worksheets(1).Range("A1")
k = 1
l = 1
While (frng.Cells(k, l).Value <> "")
If frng.Cells(k, l).Value = "Mod1" Then
If frng.Cells(k, l + 2).Value = "Pass" Then
ps = ps + 1
ElseIf frnng.Cells(k, l + 2).Value = "Fail" Then
fl = fl + 1
ElseIf frng.Cells(k, l + 2).Value = "Blocked" Then
bl = bl + 1
Else
na = na + 1
End If
End If
Wend
MsgBox (ps)
MsgBox (fl)
MsgBox (bl)
MsgBox (na)
End Sub
上运行我收到错误消息上述代码是“对象变量或With块变量未设置”。
有人可以告诉我我错在哪里,并得到我正确的代码?
在此先感谢。
你需要在VBA中做到吗?如果不是,数据透视表将帮助您在几秒钟内完成工作:根据您的工作表插入数据透视表。在行字段中放置“模块”,在列字段中放置“状态”,在值字段中放置“测试用例ID”。如果测试用例是数字的,则需要将聚合方法从SUM更改为COUNT。完成! :-) – 2013-02-27 20:21:45
注意'k','l','ps','fl'和'bl'已被声明为'Variant'。要将它们全部声明为整数,需要:'Dim k As Integer,l As Integer'等等 – barrowc 2013-02-27 23:19:43
谢谢Peter ...-但我必须用excel宏来做到这一点。我使用三张不同的工作表来挑选数据。这只是我试图通过将其他Excel数据放在同一张Excel表格中来检查代码。 :) – 2013-02-28 06:28:53