Excel 根据单元格值选择工作表
使用excel365。 我正在尝试从“锦标赛主格式36.xls”(所有选项卡都是基于括号中的球队数量的数字)模板中复制一张工作表,该模板基于此工作簿工作表数据单元格K4中的球队数量Excel 根据单元格值选择工作表,excel,vba,Excel,Vba,使用excel365。 我正在尝试从“锦标赛主格式36.xls”(所有选项卡都是基于括号中的球队数量的数字)模板中复制一张工作表,该模板基于此工作簿工作表数据单元格K4中的球队数量 Sub CopyPaste() Dim Size As String Size = "ThisWorkbook.Sheets("Data").Range("K4")" Workbooks("Tournament Master Format 36.xls").Sheets(Size).Ra
Sub CopyPaste()
Dim Size As String
Size = "ThisWorkbook.Sheets("Data").Range("K4")"
Workbooks("Tournament Master Format 36.xls").Sheets(Size).Range("A1:AO311").Copy _
ThisWorkbook.Sheets("Sheet4").Range("A1")
End Sub
更新代码:
Sub CopyPaste()
Dim Size As String
Dim i As Integer
Dim SheetNum As String
Dim ws As Worksheet
Workbooks("Scheduling Test Template.xlsx").Sheets("Data").Activate
For i = 2 To 10
'Size = Cells(i, 11).Value
Size = CStr(Workbooks("Scheduling Test
Template.xlsx").Sheets("Data").Range("K4").Value)
'SheetNum = CStr(Cells(i, 10)) + " & Under"
SheetNum = i
Debug.Print Size
If Size > 0 Then
Set ws =
ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets
(ThisWorkbook.Sheets.Count))
ws.Name = SheetNum
Workbooks("Tournament Master Format 36.xls").Sheets(Size)
.Range("A1:AO311").Copy ThisWorkbook.Sheets(SheetNum).Range ("A1")
End If
Next i
End Sub
我无法评论,因为我没有足够的声誉,但请尝试使用
Debug.Print Size
,看看这是否是正确的大小值。如果该值正确,现在检查是否存在与大小
值相同的图纸
另外,我建议不要使用.Activate
,而是使用:
Size = Workbooks("Scheduling Test Template.xlsx").Sheets("Data").Range("K4").Value
另外,如果你在这个答案下发表评论,我将能够加入你和布拉克斯的对话 您不想将
thiswook.Sheets(“Data”).Range(“K4”)放在引号内-它会变成一个文本字符串,而不是您想要的对象的值。坦白地说,我很惊讶它竟然能编译成这样。我对VBA编码非常陌生,所以我可能什么都做错了。我需要一些改变。如果我将大小设置为“Range(“K4”).Value”,它会工作吗?我一直得到一个下标超出范围的错误我去掉了引号,它仍然给我一个下标超出范围的错误,我想就是这样。当我一步一步地调整大小时,它的值仍然是0,我是不是做错了什么?我让它设置了一个大小,但它在最后一行给了我一个下标超出范围的错误注释掉工作簿(“锦标赛主格式36.xls”).Sheets(“Size”).Range(“A1:AO311”).Copy\uThisWorkbook.Sheets(“Sheet4”).Range(“A1”)
line并尝试Debug.Print Size
查看Size的值它应该在哪里打印?代码运行了,但在VBA编辑器中什么也没发生,请转到“查看>即时窗口”,一旦看到即时窗口,请再次运行代码。明白了。它返回了20个,这是它应该的