VBA返回一个数组

我有下面的代码是为了获取表名并将其放入数组中:

Function GetSheetNames(WBook) As String() Dim TempArray() As String NoSheets = WBook.Sheets.Count ReDim TempArray(1 To NoSheets) For i = 1 To NoSheets TempArray(i) = WBook.Sheets(i).Name Next i GetSheetNames = TempArray End Function 

我试图重构代码来摆脱TempArrayvariables:

 Function GetSheetNames(WBook) As String() NoSheets = WBook.Sheets.Count ReDim GetSheetNames(1 To NoSheets) For i = 1 To NoSheets GetSheetNames(i) = WBook.Sheets(i).Name Next i End Function 

但是它返回一个错误。 在VBA中甚至可以这样做吗? 我是否总是需要一个临时的局部variables在一个函数中,最后被赋值给函数名以返回它?

你需要临时数组:

 Function GetSheetNames(WBook As Workbook) NoSheets = WBook.Sheets.Count ReDim ary(1 To NoSheets) For i = 1 To NoSheets ary(i) = WBook.Sheets(i).Name Next i GetSheetNames = ary End Function Sub MAIN() Dim arry arry = GetSheetNames(ActiveWorkbook) For Each a In arry MsgBox a Next a End Sub