首页 > 解决方案 > 如果工作表名称等于命名范围中的单元格,则

问题描述

我有一个工作簿,其中包含许多不同人的选项卡,其中包含他们自己的数据。但是,在这些选项卡上工作的宏使用“If sheet name Then”,但它不是动态的。有没有办法根据命名范围使其动态化?

即范围将是约翰、本、史蒂夫等名称的列表,并且宏将搜索工作表名称是否等于该范围内的名称之一。这是当前代码的一部分:

Sub apply_exclusion_format()

Dim sht As Worksheet, r As Range
On Error Resume Next

For Each sht In Worksheets
        Set r = sht.Cells.Range("A:AY")
        If sht.Name <> "MASTER" And sht.Name <> "Exclusions" _
        And sht.Name <> "Bands" And sht.Name <> "Matrix" _
        And sht.Name <> "Macros" Then
            sht.Select
            r.Select

而不是通过使用“sht.Name <>”来排除工作表,我想包括名称在某处保存在工作表上的范围内的工作表。

标签: vbaexcel

解决方案


我是根据 Doug Coats 的建议得到的。而不是这个:

Sub apply_exclusion_format()

Dim sht As Worksheet, r As Range
On Error Resume Next

For Each sht In Worksheets
        Set r = sht.Cells.Range("A:AY")
        If sht.Name <> "MASTER" And sht.Name <> "Exclusions" _
        And sht.Name <> "Bands" And sht.Name <> "Matrix" _
        And sht.Name <> "Macros" Then

这就是我将其更改为:

Dim sht As Worksheet, rFound As Range
On Error Resume Next

For Each sht In Sheets
Set rFound = ThisWorkbook.Worksheets("Ranges").Range("Reviewer_sheet_names").Find(sht.Name)
    If Not rFound Is Nothing Then

我在“范围”工作表上创建了一个命名范围,其中包含宏所作用的工作表。同样,它不是动态的,但编辑起来要容易得多。谢谢道格!


推荐阅读