Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据单元格值选择工作表_Excel_Vba - Fatal编程技术网

Excel 根据单元格值选择工作表

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

使用excel365。 我正在尝试从“锦标赛主格式36.xls”(所有选项卡都是基于括号中的球队数量的数字)模板中复制一张工作表,该模板基于此工作簿工作表数据单元格K4中的球队数量

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个,这是它应该的