【问题标题】:Loop with If condition使用 If 条件循环
【发布时间】:2018-06-27 13:27:18
【问题描述】:

我正在尝试在工作簿中打印多张工作表,但前提是某个单元格在某个单元格中的该工作表上具有“打印”功能。我无法让循​​环通过选项卡并在最后一个停止。这里有一些尝试

1) 检查第一个选项卡,然后转到下一个选项卡 - 但是如何在最后一张纸上结束循环?工作表上总是同名

Worksheets("name of 1st worksheet").Activate  
If Range("I6") = "Print" Then
Range("a1:h16").PrintOut
End If    
Do
ActiveSheet.Next.Activate

If Range("I6") = "Print" Then
 Range("a1:h16").PrintOut
 End If

 Loop

2) ('正在尝试选择工作表 8-45) 暗淡我只要 对于 i = 8 到 45 If Range("I6") = "Print" Then 结束如果

【问题讨论】:

  • 不用激活,使用worksheets集合

标签: vba excel


【解决方案1】:

使用For Each 循环有效地迭代对象集合中的所有项目。 Worksheets 集合仅包含 Worksheet 对象,因此比 Sheets 集合更喜欢它,后者可以包含图表和其他没有 Range 成员的工作表类型:

Option Explicit

Sub LoopAndPrint()
    Dim ws As Worksheet        
    For Each ws In ThisWorkbook.Worksheets
        If ws.Range("I6") = "Print" Then
            ws.Range("A1:H6").PrintOut
        End If
    Next ws
End Sub

【讨论】:

  • 我本来打算评论为什么我赞成这个答案,但看到解释实际上更适合答案本身,我继续编辑它 - 希望你不介意 =)跨度>
  • @MathieuGuindon np,答案中的细节更好。
【解决方案2】:

未测试:

Sub LoopSheets()
    For i = 1 To Sheets.Count
        With Sheets(i)
            If .Range("I6") = "Print" Then .Range("a1:h16").PrintOut
        End With
    Next i
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 2012-08-18
    • 1970-01-01
    • 2015-08-24
    • 2021-06-07
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多