vba - 如何将工作表设置为变量以获取更多方法(带循环)
问题描述
我使用此代码从一个范围创建了一个工作表(这对我有用)
Sub AddSheets1()
Dim cell As Excel.Range
Dim wsWithSheetNames As Excel.Worksheet
Dim wbToAddSheetsTo As Excel.Workbook
Set wsWithSheetNames = ActiveSheet
Set wbToAddSheetsTo = ActiveWorkbook
Dim xlWs1 As Worksheet
Set xlWs1 = Worksheets("template")
Set Rng1 = xlWs1.Range("A1:AR2")
For Each cell In wsWithSheetNames.Range("G3:G5") 'user to change this value when list is updated
With wbToAddSheetsTo
.Sheets.Add after:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = cell.Value
Set xlWs2 = Worksheets(CStr(cell.Value))
Set Rng2 = xlWs2.Range("A1")
Rng1.Copy Rng2
If Err.Number = 1004 Then
Debug.Print cell.Value & " already used as a sheet name"
End If
On Error GoTo 0
End With
Next cell
End Sub
所以现在,我想为新创建的工作表分配变量。(这样我就可以使用 ws1、ws2 等进一步操作。类似的东西
Dim i As Integer, n As Integer
n = wsWithSheetNames.Range("G3:G5").Count
ReDim ws1(1 To n)
For i = 1 To n
Set ws1(i) = ThisWorkbook.Worksheets(i)
Next
如何将工作表名称分配给我从范围创建的名称?
解决方案
假设可能有比 G3:G5 中指定的更多的工作表,也许这会起作用。
Dim r As Range, c As Range, x As Long
Set r = wsWithSheetNames.Range("G3:G5").SpecialCells(xlCellTypeConstants)
ReDim ws1(1 To r.Count)
For Each c In r
x = x + 1
Set ws1(x) = ThisWorkbook.Worksheets(c.Value)
Next c
推荐阅读
- java - 确定字符串是否以 ; 开头的正则表达式
- python - Python遍历001-100范围内的文件名
- pug - 除了将值作为参数传入之外,有没有办法将值公开给 pug 模板?
- android - 使用导航组件将一个片段的值传递给另一个片段时未生成 FragmentArgs 类
- android - 有没有办法访问 BottomNavigationBarItem() 的标签文本并更新 appBarTitle 值,而不是使用硬编码的 SWITCH - CASE?
- flutter - 将 ViewModel 的访问方法 Flutter 到另一个 ViewModel 中
- c++ - 如何重载 + 运算符来添加两个队列?
- html - 我必须申请什么CSS来摆脱这个无用的间距?
- deep-learning - LSTM 进化预测
- arm - 如何写入 DE1-SOC 板 HPS 部分的 USB OTG 控制器寄存器?