枚举Excel VBA中的所有当前工作表名称

时间:2014-06-19 15:45:45

标签: excel vba excel-vba

我目前有代码接受用户输入并使用它来确定哪个工作表是要复制的“目标”工作表,但这需要很长时间才能在工作簿中反复运行代码中的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的新手(刚刚开始搞乱它),非常感谢任何帮助。

1 个答案:

答案 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