我正在尝试以这种方式为工作表声明一些变量
Dim e
For Each e In Array("Data", "CL", "SE", "GE", "E1", "E2", "E3", "E4", "E5", "STP", "STF", "RH", "CR", "MC", "AW")
Set wsData = ThisWorkbook.Worksheets(e)
Next e
是否可以使用1d数组声明所有工作表..?如果没有,是否有解决此问题的明智方法?示例wsData引用工作表“数据”和wsCL引用工作表“ CL”,依此类推。
The代码
Option Explicit
Sub WorksheetGroup()
Dim wsArray As Variant, wsData As Variant, i As Long
wsArray = Array("Data", "CL", "SE", "GE", "E1", "E2", "E3", "E4", _
"E5", "STP", "STF", "RH", "CR", "MC", "AW")
wsData = getWorksheets(wsArray)
' e.g.
For i = 0 To UBound(wsData)
Debug.Print wsData(i).Name
Next i
End Sub
Function getWorksheets(wsArray As Variant) As Variant
Dim wsData As Variant, ws As Variant, i As Long
ReDim wsData(UBound(wsArray))
For Each ws In wsArray
Set wsData(i) = ThisWorkbook.Worksheets(ws)
i = i + 1
Next ws
getWorksheets = wsData
End Function
Helper Sub
Sub AddSheets()
Dim e As Variant
For Each e In Array("Data", "CL", "SE", "GE", "E1", "E2", "E3", "E4", _
"E5", "STP", "STF", "RH", "CR", "MC", "AW")
ThisWorkbook.Worksheets.Add , ActiveSheet
ActiveSheet.Name = e
Next e
End Sub
[收藏集版本
主要区别在于您必须使用Set
,必须使用Add
,所以您不需要i
并且集合是基于[[one-based。]
Sub WorksheetGroupColl()
Dim wsArray, wsColl As Collection, i As Long
wsArray = Array("Data", "CL", "SE", "GE", "E1", "E2", "E3", "E4", _
"E5", "STP", "STF", "RH", "CR", "MC", "AW")
Set wsColl = getWorksheetsColl(wsArray)
' e.g.
For i = 1 To wsColl.Count
Debug.Print wsColl(i).Name
Next i
End Sub
Function getWorksheetsColl(wsArray As Variant) As Collection
Dim wsColl As New Collection, ws As Variant
For Each ws In wsArray
wsColl.Add ThisWorkbook.Worksheets(ws) ' There are more parameters.
Next ws
Set getWorksheetsColl = wsColl
End Function
Worksheets
集合...Worksheets
您也可以使用For each e in ThisWorkbook.Worksheets 'Now e represents a workbook object with each iteration Debug.Print e.Name Next e
而不是Sheets
。如果需要,您也可以使用
Worksheets
循环,就像这样...
For...Next
For e = 1 to ThisWorkbook.Worksheets.Count
Debug.Print ThisWorkbook.Worksheets(e).Name
Next e
现在,Excel通常以“ Sheet1”,“ Sheet2”的形式将代码名分配给工作表。等等。您想要做的就是将这些代码名更改为所需的名称,以便您可以将它们引用为要更改它们,可以运行如下循环:
with wsData 'code end with
这将导致工作表“数据”可以被称为“ wsData”,工作表CL可以被称为“ wsCL”,依此类推。注意:这假设您的图纸已经创建。如果不是,那么您需要先创建它们,然后再运行此代码。