Excel 2010 VBA – 使用variables的值作为另一个variables
编写VBA代码时,这是我遵循的做法。 我通常将无空格的工作表名称设置为variables名称。 例如,我有一个带有3个工作表的工作簿,其名称如下
1 – 控制
2 – 60瓦状态
3 – 60瓦状态Pvt Tbl
我通常以下列方式将工作表名称设置为工作表variables:
Set wb = thisworkbook Set wsControl = wb.sheets("Control") Set ws60WStatus = wb.sheets("60 W Status") Set ws60WStatusPvtTbl = wb.sheets("60 W Status Pvt Tbl")
现在我想使这个dynamic的含义,我的代码应该遍历工作簿中的所有工作表,并将工作表名称不带空格存储到variables名称,如ws *
所以我到目前为止有以下代码:
Sub GetwsNames() Set wb = thisworkbook Dim wsNames() i = 0 'Loop through the workbook and store the names as wsName in an array For each ws in worksheets Redim Preserve wsNames(i) Var1 = ws.Name Var2 = Replace(ws.Name," ", "") Var3 = "ws" & Var2 wsNames(i) = Var3 i = i + 1 Next 'Loop through array wsNames() and assign each element to corresponding workbook names 'For example 'Set wsControl = wb.sheets("Control") 'Set ws60WStatus = wb.Sheets("60 W Status") 'Set ws60WStatusPvtTbl = wb.sheets("60 W Status Pvt Tbl") End Sub
我想知道是否有办法做到这一点。 我们可以使用variables的值作为另一个variables吗?
您已经可以从工作表集合中按名称引用工作表。
Worksheets("Sheet 1")
如果您不想通过修改后的名称来引用它们,那么创build一个数组或字典将会很好。 我build议使用字典。 它将允许您通过键参考项目。 在这个例子中,我使用修改的名称作为键,并使用工作表对象作为项目。
Dim myWorksheets As Scripting.Dictionary Set myWorksheets = New Scripting.Dictionary Dim ws As worksheet For Each ws In ThisWorkbook.Worksheets Dim modifiedName As String modifiedName = "ws" & Replace(ws.Name, " ", "") myWorksheets.Add modifiedName, ws Next 'You can now reference the worksheets by the modified names, through the dictionary myWorksheets("wsControl").Cells(1, 1) = "Hi" myWorksheets("ws60WStatus").Cells(1, 1) = "there" myWorksheets("ws60WStatusPvtTbl").Cells(1, 1) = "world."
请注意,您需要添加对MS Scripting运行时的引用才能使用字典。 要添加参考,请转至工具 – >参考并选中其框。