VBA:不同的工作表,相同的命名单元格范围?

red*_*ase 4 excel vba excel-vba

我使用的代码返回"object_global范围失败",下面的代码(工作表3代码)的第二部分突出显示.

会使用相同的命名范围,但在不同的工作表上,正如我在下面所做的那样导致这个?

Worksheets(2).Range("LTSDI").AutoFill Destination:=Range("LTSDI:LTEDI"), Type:=xlFillDefault

Worksheets(3).Range("LTSDI").AutoFill Destination:=Range("LTSDI:LTEDI"), Type:=xlFillDefault
Run Code Online (Sandbox Code Playgroud)

感谢您的任何反馈!

Sco*_*man 5

为了比上面的评论更清楚,命名范围以下列方式工作.

命名范围可以有2个范围:

  • 工作簿级别
  • 表级别

只要 Excel 具有不同的范围, Excel就允许在同一工作簿中使用相同的命名范围.换句话说,Excel不允许在工作簿级别或工作表名称中使用相同的范围名称.

作为说明,以下是可以的:

  • myRange = Sheet1!$ A $ 1范围:工作簿
  • myRange = Sheet2!$ A $ 1范围:Sheet2

但以下不是:

  • myRange = Sheet1!$ A $ 1范围:工作簿
  • myRange = Sheet2!$ A $ 1范围:工作簿

总而言之,引用命名范围的方式如下:

工作簿范围级别

从任何工作表上的任何单元格: =MyRange

工作表范围级别

从工作表中的任何单元格开始,只要在工作簿级别没有其他相同的命名范围: =MyRange

从任何工作表中的任何单元格,或者在工作簿级别具有相同的命名范围: ='Sheet1!myRange'

最后,如果您有两个相同的范围名称,一个范围在工作簿级别,一个范围在工作表级别,如果您不限定工作表,则工作簿范围范围将用作默认值.