工作表作为一个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。
- 模板中有一个单元格,其中包含信息应该粘贴到的表单名称的值。 如果我可以设置这等于一个工作表variables,我可以写,而不是“Location1”
- 让用户在运行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()