如何使用函数循环表中的行

我为工作创build了一个testing计划模板,其中包含一个包含各个字段的表格,每行由“testing编号”列标识。 当添加一个testing用例时,我希望它检查已经input的testing用例是否已经在表中。

我试图做一个函数,通过一个参数,这是input的testing用例编号。 我希望这循环通过我的行,如果find一个匹配的情况下,我想要显示一条错误消息,它将退出子。 这是我迄今为止,但它似乎并没有工作。

function:

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 

代码在主要区块:

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

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

你也不需要特殊的function,只需要使用数据validation。 数据>数据validation>自定义添加以下公式,假定您的数据在A2中开始,并且ID在A列中,则调整这是必要的

 =COUNTIF(A:A,A2)=1 

就是这样,人们现在只能input唯一的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 

希望这可以帮助。

谢谢