运行时错误“9”:访问表格时下标超出范围

我有以下function,它返回当前表单的列表

Function getListOfSheetsW() As Variant Dim i As Integer Dim sheetNames() As Variant ReDim sheetNames(1 To Sheets.Count) For i = 1 To Sheets.Count sheetNames(i) = Sheets(i).name Next i getListOfSheetsW = sheetNames End Function 

这个函数返回从位置1开始的数组。我的目标是创build相同的函数,但从位置0开始,我试过了:

 Function getListOfSheetsNW() As Variant Dim i As Integer Dim sheetNames() As Variant ReDim sheetNames(Sheets.Count - 1) For i = 0 To Sheets.Count sheetNames(i) = Sheets(i + 1).name Next i getListOfSheetsNW = sheetNames End Function 

但是这个回报我:

运行时错误“9”:下标超出范围

我的代码有什么问题?

PS:我按照以下方式调用这些函数:

 Sub callGetListOfSheetsW() Dim arr() As Variant ' arr = getListOfSheetsW() arr = getListOfSheetsNW() MsgBox arr(1) MsgBox arr(2) End Sub 

工作表的数量将永远是一个基础。

 Function getListOfSheetsNW() As Variant Dim i As Integer Dim sheetNames() As Variant ReDim sheetNames(Sheets.Count - 1) For i = 0 To Sheets.Count - 1 '<~~This. Alternately as For i = 0 To UBound(sheetNames) sheetNames(i) = Sheets(i + 1).name Next i getListOfSheetsNW = sheetNames End Function