我目前有代码接受用户输入并使用它来确定哪个工作表是要复制的“目标”工作表,但这需要很长时间才能在工作簿中反复运行代码中的30多个工作表。
我不知道从哪里开始编码会自动从一个工作表中获取数据,将其复制到新工作表,运行更多代码,然后重复该过程直到完成。以下是当前的代码。
'Prompt User: Which sheet on Dataworkbook should be copied
Dim mySheet As String
mySheet = Application.InputBox("Enter a sheet name")
'User provides input
'Data copied from source workbook page from "Dataworkbook" specified by user
x.Sheets(mySheet).Range("A1:z28").Copy
y.Sheets("Test").Range("A1").PasteSpecial
'Copy of data appears on new sheet created when running macro
基本上我希望这个过程是自动化的,并为当前Dataworkbook中的每个工作表执行相同的命令集,但是我希望它在到达结束时停止(没有重复)。 我是VBA的新手(刚刚开始搞乱它),非常感谢任何帮助。
答案 0 :(得分:2)
您只需要一个简单的迭代,可以使用For Each ... Next
结构化循环实现。
迭代Worksheets
工作簿中的x
集合:
'Prompt User: Which sheet on Dataworkbook should be copied
' Dim mySheet As String
' mySheet = Application.InputBox("Enter a sheet name")
'User provides input
Dim ws as Worksheet
For each ws in x.Worksheets
'Data copied from source workbook page from "Dataworkbook" specified by user
ws.Range("A1:z28").Copy
y.Sheets("Test").Range("A1").PasteSpecial
'### Put the rest of your code here to manipulate the data on ws
'
MsgBox ws.Range("A1").value 'etc.
'
'
'###
Next
关于For Each的文档......下一个:
http://msdn.microsoft.com/en-us/library/office/gg264596(v=office.15).aspx
VBA语句文档的完整列表,它也非常有用:
http://msdn.microsoft.com/en-us/library/office/jj692812(v=office.15).aspx