在VBA中返回,没有做我所期望的

Public Function GetRowToWriteOn(ByVal SheetName As String, ByVal id As Integer) As Integer LastRow = ActiveSheet.UsedRange.Rows.Count myarray = Sheets(SheetName).Range("d7:d" & LastRow).Value For row = 1 To UBound(myarray, 1) If (myarray(row, 1) = id) Then Return row End If Next End Function 

IDE说预计结束语句,我该怎么做我想要的? (返回id是相同的那一行?)

我对VBA一点都不熟悉,但是当我从微软看这个例子,这应该工作? :

Return语句同时指定返回值并退出函数。 以下示例显示了这一点。

 Function myFunction(ByVal j As Integer) As Double Return 3.87 * j End Function 

在VBA中,返回值不是通过return关键字完成的,因为它是在其他语言中自定义的。 尝试:

 GetRowToWriteOn = row 

函数名称本身就是一个variables。

 Public Function GetRowToWriteOn(ByVal SheetName As String, ByVal idnr As Integer) As Integer LastRow = ActiveSheet.UsedRange.Rows.Count myarray = Sheets(SheetName).Range("d7:d" & LastRow).Value For row = 1 To UBound(myarray, 1) If (myarray(row, 1) = idnr) Then GetRowToWriteOn = row Exit Function End If Next GetRowToWriteOn = UBound(myarray, 1) + 1 Exit Function 'Probably not needed :) End Function