是否可以将命名范围附加到“activesheet”,而不是特定的工作表?

问题描述 投票:0回答:1

是否可以命名一个范围而不将其从属于单个工作表?就像如果我在工作表 1 上选择“r1”,它将选择工作表 1 上的范围 e2:e7,然后我可以转到工作表 2 并选择 r1,它将选择工作表 2 上的范围 e2:e7。

我想在附加到按钮的单个宏中使用命名范围。我的 10 张纸上每张都有 1 个按钮。范围(r1、r2、r3)涵盖e2:e7、e213:e184、e281:e284。我喜欢使用命名范围,因为它们会在工作表中添加行时自动更新,而不是每次都进入 VBA 进行更新。我不想为每个页面创建命名范围。

当我尝试删除工作表名称 (='MON (1)'!$E$2:$E$7) 使其看起来像这样:=$E$2:$E$7 时,它只是恢复为带有工作表名称。问题是,当我单击工作表 2 上的按钮时,它会在工作表 1 上运行宏。我也尝试过“=activesheet.range(e2:e7)”,这是我在另一篇文章中找到的,但它只是导致错误。

excel vba excel-formula named-ranges
1个回答
0
投票

所以这会有点乱……在 VBA 中有很多方法可以引用范围,或者只是定义范围;例如:

dim currentNamedRange as range
set currentNamedRange = ThisWorkbook.Name("r1").RefersToRange 'uses a named range in the whole workbook and finds its location
set currentNamedRange = ThisWorkbook.Sheets(1).Range("E2:E7") 'uses a specified range on a sheet
set currentNamedRange = Range("E2:E7") 'a range with no qualifications, meaning it is the active sheet

与通过选择和标记来设置命名范围类似,您还可以在 VBA 中定义每个范围,并在每张纸上使用其他事件来与引用交互,例如:

Private Sub Worksheet_BeforeDoubleClick(Target As Range)
    Select Case Target
        Case Cells(1,1) 
            ThisWorkbook.Sheets(1).Range("E2:E7").Select
        Case Else
            Exit Sub
    End Select
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.