excel 如何将区域从一个工作表复制到另一个工作表,其中工作表由单元格值指定?

iszxjhcz  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(190)

我正在尝试将数据从一个工作表复制到另一个工作表。我有一个工作簿,其中有大约62个工作表选项卡。
对我来说特别棘手的部分是,数据需要复制到的工作表不会总是相同的。
我有一个下拉菜单,列出了62件不同的设备。这是显示在G1的工作表命名为“主页”。我希望文本复制到正确的标签的基础上的选择。
我想出了如何复制特定的文本,当我这样做时,我看到单词“文本”显示在指定的工作表上。

Sheets(Range("g1").Value).Activate
Range("a1").Value = "TEXT"

我不知道如何将G4:G24从我的“HOME”工作表复制到基于同一下拉菜单的另一个工作表。
这就是我所尝试的。

Private Sub CommandButton1_Click()
    Worksheets("HOME").Range("g4:g24").Copy
    Sheets(Range("g1").Value).Activate
    Range("a1").Value = "TEXT"
    Sheets(Range("g1").Value).Activate
    Range("f4").PasteSpecial
End Sub
h9vpoimq

h9vpoimq1#

明确工作簿和工作表-在未限定工作表的情况下,切勿使用Range/Cells(尽管如果您引用的是关联的工作表,则可以在工作表代码模块中使用它)。

Private Sub CommandButton1_Click()
    Dim wb As Workbook, ws As Worksheet
    Set wb = ThisWorkbook                           'or ActiveWorkbook?
    With wb.Worksheets("HOME")
        Set ws = wb.Worksheets(.Range("G1").Value)  'create a worksheet reference
        ws.Range("A1").Value = "TEXT"               '...and use it
        .Range("g4:g24").Copy ws.Range("f4")
    End With
End Sub

例如,请参阅:工作表、单元格和区域的默认范围是什么?

sqxo8psd

sqxo8psd2#

一般来说,你有一个很好的开始,但它可以在更少的行和更快的速度完成,如下图所示:

Sub ExampleSub()

    Dim SheetName As String

    SheetName = Worksheets("HOME").Range("A1").Value

    Worksheets("HOME").Range("G4:G24").Value = Worksheets(SheetName).Range("G4:G24").Value

End Sub

甚至不需要使用变量SheetName,但它可以使事情变得简单,它现在还可以在子例程中重用。引用工作表的另一种方法是将变量设置为工作表:

Sub ExampleSub()

    Dim SheetName As Worksheet
    Dim HomeSheet As Worksheet

    Set HomeSheet = Worksheets("HOME")
    Set SheetName = Worksheets(HomeSheet.Range("A1").Value)

    HomeSheet.Range("G4:G24").Value = SheetName.Range("G4:G24").Value

End Sub

相关问题