0

我必须为以下场景编写一个宏:

我有一本有一张纸的excel书。工作表包含带有测试用例和测试状态的模块名称。我必须用特定模块的测试状态来计算测试用例,比如“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

在运行上述代码时,我收到一条错误消息,即“未设置对象变量或块变量”。

谁能告诉我我错在哪里并给我正确的代码?

提前致谢。

4

2 回答 2

1

错误在这一行:

frng = Worksheets(1).Range("A1")

当您使用对象(不是简单的变量)时,您需要一个SET命令:

set frng = Worksheets(1).Range("A1")

有关LETSET的更多信息,请参阅此问题

于 2013-02-27T20:30:36.103 回答
1

正如彼得阿尔伯特建议的那样,你真的应该Pivot Table为此使用 a 。重新创建轮子没有任何意义,除非您在 VBA 中有非常特殊的需求。

如果您对数据透视表中的外观感到好奇,以下是创建数据透视表的方法:

1.突出显示数据范围(模块、测试用例 ID、测试状态)

2.转到Insert -> Pivot Table,然后单击 OK

在此处输入图像描述

3.在右下角PivotTable Field List,拖动:

  • Module行标签
  • Test Case ID价值观_
  • Status列标签

在此处输入图像描述

生成的表格如下所示:

在此处输入图像描述

如果这不是您正在寻找的确切PivotTable Field List视图,您可以使用这些值(例如 switchStatusTest Case ID),直到找到适合您需要的视图。

于 2013-02-27T22:07:34.350 回答