Excel 工作表上变量的多个赋值
我有一个函数,它指向工作簿中的一个特定工作表,从中获取一些数据并将其返回给该函数。代码如下:Excel 工作表上变量的多个赋值,excel,vba,Excel,Vba,我有一个函数,它指向工作簿中的一个特定工作表,从中获取一些数据并将其返回给该函数。代码如下: 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.
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
问题是,当这个函数只被调用一次时,它就可以正常工作并按预期运行。但是,例如,当它在同一个流中被多次调用时,我会在将变量分配给工作表的行上得到一个错误。我真的不确定这里出了什么问题。我得到一个
下标超出范围的错误。任何帮助都将不胜感激 如果Personal.xlsb中有此函数,如果当前的ActiveBook不是您期望的,则可能会出现此错误。确保活动工作簿包含工作表“jobSheet”或将ws作为参数传递给“NameOffflow”函数
您应该避免使用这一行代码:
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
如果Personal.xlsb中有此函数,则如果当前ActiveBook不是您期望的ActiveBook,则可能会出现此错误,并且应避免使用以下代码行:For curCell=2 To ws.Rows.Count。您将遍历工作簿的所有行…谢谢Seb的回答。我添加了一个ThisWorkbook。在调用此函数的函数中激活,它就工作了!现在,我对VBA不是很有经验,但是,您能告诉我,是否可以只遍历那些包含一些单元格的行,这些单元格中有值?我知道这与这个问题无关。但是,如果你能让我知道,那就太好了!我将制定一个答案