【问题标题】:Reference a worksheet via a variable通过变量引用工作表
【发布时间】:2015-09-09 16:32:00
【问题描述】:

我想通过索引引用工作簿中的表格。 - 本质上是因为我想遍历一个循环并清除几个工作表上的某些单元格。

目前我已经编写了一些 vba,其中包含如下代码:

Sheet36.Activate Range("B3:T201").ClearContents

对每张纸每次都重复,例如: Sheet37.激活 Range("B3:T201").ClearContents

感谢所有答案。

【问题讨论】:

  • 那么,您想遍历每个工作表,然后使用 if 语句或 case select 语句来确定要在任何给定工作表上清除什么?

标签: excel vba variables


【解决方案1】:

如果您只有几张要清除范围的工作表,可以像这样轻松地同时引用它们:

Sheets(Array("Sheet36", "Sheet37").Range("B3:T201").ClearContents

但如果你真的想循环所有的工作表,那么方法如下:

Dim sh
For Each sh In Worksheets
    sh.Range("B3:T201").ClearContents
Next

【讨论】:

    【解决方案2】:

    感谢 ExcelHero。

    您可以使用您感兴趣的特定工作表的集合。例如:

    Private mChosenSheets As Collection
    
    Sub Init()
        Set mChosenSheets = New Collection
        
        ' Add here whichever worksheets you want in your iterable list
        mChosenSheets.Add Sheet6
        mChosenSheets.Add Sheet36
        mChosenSheets.Add Sheet38
        ' etc...
        
    End Sub
    
    Sub ClearChosenSheets()
        Dim sht As Worksheet
        
        For Each sht In mChosenSheets
            sht.Range("B3:T201").ClearContents
        Next
        
    End Sub
    

    如果您只想遍历工作簿中的每个工作表,则可以使用 Workbook.Worksheets 集合。

    【讨论】:

    • 工作簿中的每个工作表已经是两个内置集合的成员:SheetsWorksheets。关于这个问题,公开将它们添加到另一个集合的目的是什么?
    • 我不认为 Op 想要遍历 Workbook 对象的 Worksheets 集合(即每个工作表)。我认为他想遍历他生成的特定工作表(即只有一些工作表)的列表。这个答案旨在向他展示一种将这些工作表添加到他自己的可迭代集合中的方法。
    • 谢谢大家。第二种解决方案更适合我的需要(因为我只想清除某些床单)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    相关资源
    最近更新 更多