用户输入的源工作表名称,从源工作表中复制数据,粘贴到目标工作表中

问题描述 投票:0回答:1

尊敬的stackoverflow专家,

我是vba的新手,并且想要一个简单的宏来执行某些复制和粘贴任务。我有一个xlsm文件,其中包含多个工作表,名称如下计算方式柠檬橙子香蕉

我只知道一个非常简单且流行的外行宏。

Sub copyandpasterawdata()

  Workbooks("trymacro.xlsm").Worksheets("ORANGE").Range("A1:H2000").Copy

  Workbooks("trymacro.xlsm").Worksheets("CALCULATIONS").Range("A1").PasteSpecial Paste:=xlPasteValues

End Sub

我想使源工作表名称为“ dynamic”。也就是说,当我在工作表CALCULATIONS上的单元格I1中输入“ ORANGE”并运行宏时,来自工作表ORANGE的数据被复制-n-粘贴,而当我在工作表CALCULATIONS上的单元格I1中输入“ LEMON”时并运行宏,数据相反,将从工作表LEMON中复制粘贴。

谢谢。

约翰

excel vba copy-paste
1个回答
0
投票

因为只想复制值,所以可以使用Range.value2 = RangeCopy.value2

请注意,I1位于数据的粘贴区域,请尝试:

 Sub copyandpasterawdata()
        If ActiveSheet.Name <> "CALCULATIONS" Or Not (ThisWorkbook.Name Like "*trymacro*") Then Exit Sub

        'check if sheetname
        Dim sheetsname As Variant
         sheetsname = Array("LEMON", "ORANGE", "BANANA")
        If IsEmpty(Filter(sheetsname, [I1].Value2, True, vbTextCompare)) Then Exit Sub

       'assign value
        Range("A1:H2000").Value = Worksheets([I1].Value2).Range("A1:H2000").Value
    End Sub
© www.soinside.com 2019 - 2024. All rights reserved.