介绍两种从工作簿中获取所有工作表名的方法,将获取到的结果保存到字符串数组中,以方便后续使用。
函数1
' 函数名称:comm_get_sheetName_list1
' 功能:获取指定工作簿的所有工作表名称
' 说明:将取得的名称保存到字符串数组中。参数的工作簿需要事前打开。
' 参数:
' - inWorkBook:工作簿对象
' 返回值:工作表名称的字符串数组
Function comm_get_sheetName_list1(inWorkBook As Workbook) As String()
Dim oneSheet As Worksheet ' 循环使用的临时sheet对象
Dim sheetNameList() As String ' 工作表名称数组
Dim i As Integer ' 数组下标变量
i = 0 ' 初始化
' 循环取得参数设定的工作簿的每一个sheet对象
For Each oneSheet In inWorkBook.Sheets
' 每循环一次,给工作表名称数组动态分配一个存储空间
i = i + 1
ReDim Preserve sheetNameList(i)
' 取得当次循环的工作表名称并保存到工作表名称数组
sheetNameList(i) = oneSheet.Name
Next
' 返回工作表名称数组
comm_get_sheetName_list1 = sheetNameList
End Function
演示1
■当前工作簿
' 演示代码
Dim sheetNameArr() As String ' 接收函数返回的工作表数组
' 调用函数
sheetNameArr = comm_get_sheetName_list1(ThisWorkbook)
' 循环输出结果
Dim i As Integer
For i = 1 To UBound(sheetNameArr)
Debug.Print sheetNameArr(i)
Next
■执行结果
函数2
' 函数名称:comm_get_sheetName_list2
' 功能:获取指定工作簿的所有工作表名称
' 说明:将取得的名称保存到字符串数组中。前提:工作簿已经打开。
' 参数:
' - inWorkBook:工作簿对象
' 返回值:工作表名称的字符串数组
Function comm_get_sheetName_list2(inWorkBook As Workbook) As String()
Dim sheetNameList() As String ' 工作表名称数组
Dim i As Integer ' 数组下标变量
Dim j As Integer ' 工作表下标变量
i = 0 ' 初始化
' 从1开始循环到工作表总数
For j = 1 To inWorkBook.Sheets.Count
' 每循环一次,给工作表名称数组动态分配一个存储空间
i = i + 1
ReDim Preserve sheetNameList(i)
' 取得当次循环的工作表名称并保存到工作表名称数组
sheetNameList(i) = inWorkBook.Sheets(j).Name
Next
' 返回工作表名称数组
comm_get_sheetName_list2 = sheetNameList、
End Function
演示2
■其他工作簿
' 演示代码
Dim sheetNameArr() As String ' 接收函数返回的工作表数组
Dim otherWorkBook As Workbook ' 工作簿对象
' 打开工作簿
Set otherWorkBook = Workbooks.Open("D:\VBA\测试.xlsx")
' 调用函数
sheetNameArr = comm_get_sheetName_list2(otherWorkBook)
' 循环输出结果
Dim i As Integer
For i = 1 To UBound(sheetNameArr)
Debug.Print sheetNameArr(i)
Next
■执行结果
评论