【问题标题】:For loop with nested 'with...end with' [duplicate]For循环嵌套'with ... end with' [重复]
【发布时间】:2015-10-23 05:54:06
【问题描述】:

所以我尝试使用 -with...end with- 在 -for..next- 循环中。我们的想法是将所有这些东西放在每张纸上。下面的代码是伪代码

    For Sheet = Sheet1 to Sheet10
        With Sheet
            ...code
        End With
     Next

所以我有 10 张纸。 Sheet1、Sheet2、Sheet3 等 我似乎无法弄清楚如何遍历所有这些工作表

【问题讨论】:

  • 你好@Malachi,我总是先尝试搜索,但大多数时候我找不到任何东西,即使有对我有帮助的答案。您对如何准确找到我要找的东西有什么建议吗?
  • 如果您想在 Google 中输入 VBA for each statement 并使用 IntelliSense。

标签: vba excel


【解决方案1】:

你应该试试这个答案

https://stackoverflow.com/a/21918281/1214743

Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
    ResizeColumns WS
Next WS

如果您不想选择工作簿中的每个工作表,您可以创建一个工作表名称数组,然后遍历它们。

【讨论】:

  • 这将循环所有工作表,而不是 sheet1 到 sheet10?如果有另一张不打算处理的工作表会怎样?
  • OP 建议“我们的想法是在每张工作表上获取所有这些内容”,当有人说 Excel 时,我倾向于认为他们想要工作簿中的所有工作表。但我会编辑我的答案@99moorem
  • @99moorem 然后OP可以很容易地添加一个IF条件来忽略它。
  • @99moorem - 如果删除了 1-10 之间的一张或多张纸怎么办?
  • @Malachi 实际上有一些工作表需要被排除,但我只会把 - 如果不是 WS = 工作表排除在外...... -。感谢您的帮助
【解决方案2】:
Dim ws As Excel.Worksheet
Dim iIndex As Integer

For iIndex = 1 To ActiveWorkbook.Worksheets.count
    Set ws = Worksheets(iIndex)
    ws.Activate

    'Do something here.
    ws.Range("A2").Value = "SomeValue"
Next iIndex

【讨论】:

  • 这将循环所有工作表,而不是 sheet1 到 sheet10?如果有另一张不打算处理的工作表会怎样?
  • 正确。它将循环所有工作表。如果要定位工作表,则必须执行 For iIndex = 3 To 5 或任何范围。用户说“我有 10 张纸”以及如何“循环浏览所有这些纸”。
【解决方案3】:

你这样做的方式不起作用,因为 Sheet 不会是一个对象。下面的每个解决方案都会为您提供一个工作表对象并允许您使用。

Dim wks as Worksheet
For Each wks in ThisWorkbook.Worksheets
With wks
  ...
End With
Next

应该有效

【讨论】:

  • 这已经是一个答案了。
  • 没错,部分答案已经存在,但我解释了为什么原始解决方案无法工作。
【解决方案4】:
Dim wsTemp as Worksheet

For each wsTemp in Worksheets
   wsTemp.activate
   'Do something
Next wsTemp

【讨论】:

  • 这将循环所有工作表,而不是 sheet1 到 sheet10?如果有另一张不打算处理的工作表会怎样?
  • 用户问“所以我有 10 张纸……如何遍历所有这些纸?”
猜你喜欢
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 2016-08-04
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多