工作表作为变量?

时间:2014-10-21 20:35:13

标签: excel vba excel-vba

我创建了一个美化的复制和粘贴宏,用于复制来自"模板的导入信息。工作表到特定位置的工作表。
(所以我的工作表名为location1 location2 location3 location4和template)

目前,我的代码如下所示:(但更长,更重复)

 Sheets("Template").Select
 Range("P24:Q30").Select
 Selection.Copy
 Sheets("location1").Select
 Range("P24").Select
 ActiveSheet.Paste

我想要" location1"成为工作表变量。

我需要一种方法来更改它,而无需更改每个不同模板的代码。
据我所知,有两种解决方案。

  1. 模板中有一个单元格,其中包含信息应粘贴到的工作表名称的值。如果我可以将其设置为我可以写的工作表变量而不是" Location1"
  2. 让用户在运行宏时从列表中选择位置工作表。
  3. 我不知道如何做其中任何一项,我也不知道哪种方法会更好。

2 个答案:

答案 0 :(得分:1)

首先,删除select通常是件好事:

Sheets("Template").Range("P24:Q30").Copy Sheets("location1").Range("P24")

如果你的标签名称在单元格'B1'对于工作表模板,您可以使用:

dim sTabName as String

sTabName=Sheets("Template").[B1]
Sheets("Template").Range("P24:Q30").Copy Sheets(sTabName).Range("P24")

您还可以为工作表创建一个实际变量,例如

dim shtDest as Worksheet

set shtDest =sheets(Sheets("Template").[B1])
Sheets("Template").Range("P24:Q30").Copy shtDest.Range("P24")

答案 1 :(得分:0)

您可以使用以下内容为VBA中工作表中的单元格提供变量值:

Sub example()
    'Let vba know that you have a variable and it's type is string
    Dim myVariable as string

    'Assign the value from cell B5 in Worksheet "Template" to the variable
    myVariable = Sheets("Template").Range("B5").value
End sub()

您可以遍历一系列单元格并获取其值。

Sum example()
    Dim myVariable as string

    'Let VBA know that we will store a range in variable "MyCell"
    Dim myCell as Range

    'loop through every cell in a range
    For each myCell in Sheets("Template").Range("B5:B100")

        'copy data from the template to the worksheet stored in the cell we are on
        Sheets(myCell.Value).Range("P24:Q30") = Sheets("Template").Range("P24:Q30")

    Next myCell
End Example()