我有一个函数可以转到工作簿中的特定工作表,并从那里获取一些数据并将其返回给函数。这是代码:
Function nameOfFlow(jobSheet As String, jobName As String) As String
Dim ws As Worksheet
Dim curCell As Long
Set ws = Worksheets(jobSheet)
For curCell = 2 To ws.Rows.Count
If ws.Cells(curCell, 2).Value = jobName Then
nameOfFlow = ws.Cells(curCell, 2).Offset(0, 3).Value
End If
Next curCell
End Function
事情就是当这个函数只被调用一次然后它工作正常并按预期运行。但是当例如它在同一个流程中被多次调用时,我在我将变量分配给工作表的行上得到一个错误。我不确定这里出了什么问题。我收到Subscript out of Range
错误。任何帮助将不胜感激!
答案 0 :(得分:0)
如果此功能在您的Personal.xlsb中,如果当前的ActiveBook不是您期望的那个,则可能会出现此错误。确保活动工作簿是包含工作表' jobSheet'或者将ws作为参数传递给你的名字'FF'功能
你应该避免这行代码:
For curCell = 2 To ws.Rows.Count
它会让你的宏遍历工作簿的所有行。
你可以这样纠正:
For curCell = 2 To ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
If ws.Cells(curCell, 1).Value = jobName Then
nameOfFlow = ws.Cells(curCell, 2).Offset(0, 3).Value
End If
Next curCell