为活动工作簿编写循环语句

时间:2013-12-09 21:28:42

标签: excel vba loops excel-vba

首先,不要笑。如果你这样做,那就静静地做吧。我不知道如何编写循环Visual Basic,但我拍了我最好的镜头。我正努力学习VBA,通过这样做,我只需要朝着正确的方向努力。我的想法是想编写一个简单的宏来查看每个工作表,评估是否存在第19-43行的分组,如果有分组,则删除分组,如果没有分组,则转到下一个工作表,如果没有更多工作表,则结束循环。

这是我的尝试,显然不起作用。

Dim V As Variant

V = ActiveWorksheet

For Each V In Workbook

Rows("a29:43").Select

Selection.Rows.Ungroup

Next

现在,我也不知道如果它被分组的话可以说什么资格,那么这个,如果没有分组,那么这个。我会想象它就像分组=真,但我无法弄明白。我非常感谢任何花些时间看这个的人。

2 个答案:

答案 0 :(得分:0)

您需要定义要迭代的集合,因此在这种情况下,它将是工作簿中包含的工作表:

Dim wbk As Workbook
Dim sht As WorkSheet

Set wbk = ActiveWorkbook

For Each sht In wbk.Worksheets

  sht.Rows("a29:43").Select ' this may give you trouble. Possibly try sht.Range("a29:a43").Select?

  Selection.Rows.Ungroup

Next

Set wbk = Nothing ' Clean up our objects. Just to be sure.

顺便说一句,我不知道是否需要提及,但为了以防万一,我建议你不要使用单字符变量名。

答案 1 :(得分:0)

一些事情:

  1. 根据@pnuts,您在目标范围内缺少“A”。这可能很关键。
  2. 如果未对行进行分组,则
  3. Ungroup将失败。这有点像Autofilter
  4. 最佳做法是使用Range - 而不是Rows,只使用Rows的{​​{1}}属性 - 处理目标细胞时,除非另有不同方法是必要的或合理的。
  5. 这是一个不那么不同的看法。请注意每个变量的明确声明。另外,阅读评论。他们不是最好的,但他们可以帮助你明显地学习更多的VBA。 ;)

    Range

    如果有帮助,请告诉我们。