工作表作为一个variables?

我创build了一个美化的复制和粘贴macros,将导入的信息从“模板”工作表复制到特定位置的工作表中。
(所以我有工作表名为location1位置2位置3位置4和模板)

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

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

我想“location1”是一个工作表variables。

我需要一种方法来改变,而不必改变每个不同模板的代码。
据我所见,有两个解决scheme。

  1. 模板中有一个单元格,其中包含信息应该粘贴到的表单名称的值。 如果我可以设置这等于一个工作表variables,我可以写,而不是“Location1”
  2. 让用户在运行macros时从列表中select位置工作表。

我不知道该怎么做,我不知道哪个更好。

首先,删除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") 

你也可以为你的工作表创build一个真正的variables,例如

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

您可以在VBA中的工作表中使用以下单元格中的单元格赋予variables值:

 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()