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
我试图重构代码来摆脱TempArray
variables:
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