如何使用函数遍历表中的行

时间:2015-10-27 15:17:56

标签: excel vba excel-vba

我正在为工作创建一个测试计划模板,其中包含一个包含各种字段的表格,每一行都由"测试号码"柱。添加测试用例时,我希望它检查输入的测试用例是否已经在表中。

我尝试使用传入参数的函数来执行此操作,该参数是输入的测试用例编号。我希望这循环遍历我的行,如果找到匹配的大小写,我想要显示一条错误消息并退出该子句。这是我到目前为止所做的,但它似乎没有用。

功能:

$value

主要街区的代码:

Function ExistingTest(x As Variant) As Boolean

    Dim intStartRow     As Integer
    Dim intStartCol     As Integer
    Dim intRowCount     As Integer
    Dim intColCount     As Integer
    Dim TestTable       As String

    TestTable = "Tests"

    intRowCount = Range(TestTable).Rows.Count
    intColCount = Range(TestTable).Columns.Count
    intStartRow = Range(TestTable).Rows(0).Row
    intStartCol = Range(TestTable).Columns(1).Column

    ExistingTest = False

    For i = 1 To intRowCount
    If Range(TestTable).Rows(i).Columns(1).value = x Then
        ExistingTest = True
        Exit For
    End If
Next i
  End Function

1 个答案:

答案 0 :(得分:0)

我不会为此使用循环,您可以使用函数“CountIf”来计算ID的重复次数。

此外,您不需要特殊功能,只需使用数据验证即可。 数据>数据验证>习惯 假设您的数据在A2中开始且ID在A列中,则添加以下公式,调整此项为ifneeded

=COUNTIF(A:A,A2)=1

就是这个人现在只能输入唯一的ID。

如果您仍想使用用户定义的函数,请查看此示例,该示例也使用CountIf

Function ExistingTest(ByVal r As Range, ByVal strNamedRange As String) As Boolean
    ExistingTest = WorksheetFunction.CountIf(Range(strNamedRange).Columns(1), r.Value)

End Function


Sub MainBlock()

    If ExistingTest(TNName, "Test") Then
        response = MsgBox("ERROR: Test Evidence for Test Number " + TNName + " Already exists")
    End If

End Sub

希望这会有所帮助。

由于