如何遍历(特定)工作表列表

时间:2014-11-28 11:59:15

标签: excel vba

我正在使用Excel 2013&我正在整理一个宏来自动复制/粘贴多张表中的实际数据(每个站点一张,大约80多个站点,工作簿还有一些我不想要的其他表格触摸)从E6:E157到右边的一列(该列取决于数据的月份)。我已经获得了复制/粘贴位的代码(如下所示),但我似乎无法通过工作表进行迭代。

Dim month As Integer

month = Sheets("Group Incl Others").Range("b2")
    Sheets("Group Incl Others").Select
    Range("e6:e157").Select
    Selection.Copy
    ActiveCell.Offset(0, (13 + month)).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False

我想要做的是为宏提供要处理的工作表列表(隐藏工作表或代码本身)&它通过列表执行复制&糊。它是一个(相当)静态的工作表列表&只有在我们获得新网站时才会改变。除了我要处理的第一张纸(Group Incl Others)之外,纸张也是连续的。

我从这里尝试了几条建议&其他网站,但它永远不会到下一张表。我很长一段时间没有使用过VBA,所以我对如何继续使用感到有些不知所措。

1 个答案:

答案 0 :(得分:0)

在一些工作表上放置要编辑的工作表列表(无关紧要;隐藏与否)然后选择工作表名称(如果在列表顶部放置标题,则不选择列标签)并键入 sheets2Bedited 在hte公式栏左侧的名称框中。这将创建一个名为 sheets2Bedited 的命名范围,该范围将在以下宏中使用。

Dim mnth As Long, rWS As Range, ws0 As Worksheet
mnth= Sheets("Group Incl Others").Range("b2").Value
For Each rWS In Range("sheets2Bedited")
    With Sheets(rWS.Value)
        'either like this
        .Range("e6:e157").Offset(0, 13 + mnth) = _
          Sheets("Group Incl Others").Range("e6:e157").Value
        'or like this
        '.Range("e6:e157").Offset(0, 13 + mnth) = _
          .Range("e6:e157").Value
    End With
Next rWS

我无法从您的代码中读取您实际想要用作复制,粘贴特殊,值操作的源和目标的内容,因此我提供了两种选择。