我创建了一个美化的复制和粘贴宏,用于复制来自"模板的导入信息。工作表到特定位置的工作表。
(所以我的工作表名为location1 location2 location3 location4和template)
目前,我的代码如下所示:(但更长,更重复)
Sheets("Template").Select
Range("P24:Q30").Select
Selection.Copy
Sheets("location1").Select
Range("P24").Select
ActiveSheet.Paste
我想要" location1"成为工作表变量。
我需要一种方法来更改它,而无需更改每个不同模板的代码。
据我所知,有两种解决方案。
我不知道如何做其中任何一项,我也不知道哪种方法会更好。
答案 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()