0

我在下面写了这个函数。但是,我在 QTP 中不断收到无效的函数参数。该对象是 webtable 中的链接,我不断收到“该语句包含一个或多个无效函数 agument”的错误消息。有人能帮助我吗?

Function CheckData(Value_To_Match, Rpttext, ByRef Row_Num)
  Dim tab_val, arr_val(2), rowNum
  tab_val = Split(Value_To_Match,";")
  arr_val(0) = Browser("xyz").Page("abc").WebTable("xsw").getColumnIndex(tab_val(0))
  If UBound(tab_val ) > 0 Then
    arr_val(1) = tab_val(1)
    arr_val(2) = Browser("xyz").Page("abc").WebTable("xsw").getMatchingRow(arr_val)
    Row_Num = arr_val(2) 
    Browser("xyz").Page("abc").WebTable("xsw").MatchVal arr_val, Rpttext, "Verify"
  Else
    arr_val(1) = tab_val(0)
    arr_val(2) = Browser("xyz").Page("abc").WebTable("xsw").getMatchingRow(arr_val)
    Browser("xyz").Page("abc").WebTable("xsw").MatchVal arr_val, Rpttext, "Verify"
    arr_val(2) = Row_Num
    Browser("xyz").Page("abc").WebTable("xsw").MatchVal arr_val, Rpttext, "Check"
  End If
End Function

If Trim(Parameter("DraftsViewDraftIcon")) <> "" And _
     LCase(Trim(Parameter("DraftsViewDraftIcon"))) <> "[null]" And _
     LCase(Trim(Parameter("Wrapper_Mode"))) ="set" Then

  Set ViewDraftLink = Browser("xyz").Page("abc").WebTable("xsw").ChildItem(Row_Num, 4, "Link", 0)
  ViewDraftLink.click
End If

下面这个函数用于获取匹配的行

Public Function getMatchingRow(byRef object, byVal arraydata)
  Dim introw
  Dim varComp
  On Error Resume Next
  If UBound(arraydata) = 0 Then
    Reporter.ReportEvent micFail, "Array Data", "No Data found in input parameter Array"
    getMatchingRow = 0
    Exit Function
  End If

  For introw = 1 to object.RowCount
    varComp = StrComp(Trim(object.GetCellData(introw, arrayData(0))), Trim(arrayData(1)), 0)
     If varComp = 0 And Not(isNull(varComp)) Then
       getMatchingRow = introw
       Exit Function
     End If
   Next
   getMatchingRow = 0
   On Error Goto 0
4

1 回答 1

0

如果要将getMatchingRow函数注册为方法,则第一个形参必须是形byVal参:

Public Function getMatchingRow(byVal object, byVal arraydata)

您正在使用一个byRef参数:

Public Function getMatchingRow(byRef object, byVal arraydata)

这可能会导致您遇到的麻烦。

我现在没有机会验证这一点,但无论如何请试一试。

(我对我的这个答案有些怀疑,特别是因为您说错误行是Set ViewDraftLink作业,而它应该在.getMatchingRow通话时发生。但是您还在该评论中提到了ViewDraftLink.ClickandEnd If行,所以无论如何您在这方面都是不精确的.

如果您将所有这些信息合并到问题中,进一步清理问题中的代码并删除当时过时的评论,这真的会有所帮助。)

于 2014-04-23T16:10:10.653 回答