对工作表上的变量进行多次分配

时间:2014-04-25 14:51:07

标签: excel-vba vba excel

我有一个函数可以转到工作簿中的特定工作表,并从那里获取一些数据并将其返回给函数。这是代码:

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错误。任何帮助将不胜感激!

1 个答案:

答案 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