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

4

使用 Excel 365。 我正在尝试根据 ThisWorkbook 工作表中 Data 的 K4 单元格中的队伍数量,从 "Tournament Master Format 36.xls" 模板中复制一个工作表(所有选项卡都基于括号中有多少个团队)。

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

1
你不想把 ThisWorkbook.Sheets("Data").Range("K4") 放在引号中 - 这样它就变成了一个字面字符串,而不是你想要的对象的值。坦白地说,我很惊讶它甚至能这样编译。 - braX
我对VBA编程非常陌生,所以我可能做错了一切。我需要做一些更改。如果我将Size设置为“Range(”K4“)。Value”,它会起作用吗?我一直收到“下标超出范围”错误。 - spenser1235yahoocom
我去掉了引号,但仍然出现了“下标超出范围”错误。 - spenser1235yahoocom
我想就是这样了。当我单步执行到 Size 时,它仍然具有0的值,我做错了什么吗? - spenser1235yahoocom
1个回答

3

我无法评论,因为我的声望不够,但是请尝试使用Debug.Print Size,看看这是否是正确的Size值。如果这是正确的值,请检查是否存在一个与Size相同值的工作表。

此外,我建议不要使用.Activate,而应改用:

Size = Workbooks("Scheduling Test Template.xlsx").Sheets("Data").Range("K4").Value

顺便提一句,如果您在此答案下评论,我将能够加入与您和braX的对话。


我设定了一个大小,但在最后一行出现了下标超出范围的错误。 - spenser1235yahoocom
Workbooks("Tournament Master Format 36.xls").Sheets("Size").Range("A1:AO311").Copy_ ThisWorkbook.Sheets("Sheet4").Range ("A1")这一行注释掉,然后尝试使用Debug.Print Size来查看Size的值。 - PuravTheGreat
明白了。它返回了20,这就是它应该返回的。 - spenser1235yahoocom
所以您的意思是要從名為20的工作表複製儲存格嗎?還是指的是該工作表的索引(位置)為20? - PuravTheGreat
由于我们已将Size定义为字符串,它正在寻找名为20的工作表,而不是索引为20的工作表。 - PuravTheGreat
显示剩余19条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接