【问题标题】:Referencing Name Property Using An Array使用数组引用名称属性
【发布时间】:2014-06-06 15:31:08
【问题描述】:

我正在开展一个项目,该项目需要我根据数组中某个位置的值来选择工作表。我已经用值填充了desArr()(字符串类型),desArr(0) 包含我要引用的工作表的名称。为了避免用户更改选项卡名称和弄乱代码的问题,我试图引用工作表的 CodeName。

通常,我可以这样做:

ThisWorkbook.Worksheets(Import.Name) 

Import 在 VB 编辑器的 (Name) 属性下指定。但是,我现在想可变地引用该名称,就像在输入中取决于desArr(0) 的值一样。我尝试执行以下操作但无济于事:

ThisWorkbook.Worksheets(desArr(0).Name)

ThisWorkbook.Worksheets(desArr(0) & ".Name")

有人知道如何解决这个问题吗?

【问题讨论】:

  • ThisWorkbook.Worksheets(desArr(0))?
  • 感谢您的回复!但这只会引用工作表的选项卡名称。因此,如果我在工作簿中的一个选项卡是“export”并且 desArr(0) 包含“export”,那么它会起作用。我想要实现的是调用工作表的 Name 属性,它可能与选项卡名称相同也可能不同。有什么想法吗?
  • 也许收集工作表对象而不是它们的名称会更容易?如果数组中有工作表对象而不是名称,则可以调用 desArr(0).Name 请注意,如果您已正确设置工作表,则不需要 ThisWorkbook.WorkSheets 部分。

标签: excel vba


【解决方案1】:

只需使用:

Import

这是在不需要知道其Name 属性的情况下引用工作表对象的方法。只需使用它的变量/对象名称。以上等价于,但比

ThisWorkbook.Worksheets(Import.Name) 

您所说的“代码名称”和(Name)“属性”不是属性。它只是对象变量的名称。从我可以从您的问题中推断出,您的工作表对象称为Import,所以就使用它。


编辑:

很难理解你在问什么;澄清一下:

如果我理解正确,您有一张名为“Import”的工作表,并且您希望能够防范这种情况:

好的,一些用户认为重命名工作表是个好主意。请注意,这会将工作表对象的 Name 属性值更改为 "User-input crap"Name 属性和选项卡中写的东西总是一样;它们是一样的;它们是一对一的。

但是,工作表对象本身仍被称为Import,或者更早的名称。 (默认为Sheet1,但也许您在“属性”窗口中更改了它。)请参阅:

不管用户输入废话,我仍然可以说,例如:

Import.Cells(1, 1).Value = "frog"

我也可以这样说,没用的复杂但完全等价:

ThisWorkbook.Worksheets(Import.Name).Cells(1, 1).Value = "frog"

可以也这样说:

ThisWorkbook.Worksheets("User-input crap").Cells(1, 1).Value = "frog"

但为此我必须知道用户在工作表选项卡中键入的内容,而我不知道。

【讨论】:

  • 感谢您的回复!但我想引用 Name 属性,因为如果有人更改工作表选项卡名称,我的代码将失败。使用 Name 属性,如果不先通过 VB 编辑器进行更改,用户就无法轻易更改它。另外,我知道每个工作表的 Name 属性,但我只是不知道名称未输入但存储在数组 desArr(0) 中时的语法。有什么想法吗?
  • 以上内容应该可以明确回答您的问题。
  • 只是为了澄清一下,这将是标签名称中发布的内容并且可以更改对吗?所以在本例中,Import 将是选项卡的名称,但不一定是工作表的 Name 属性?
  • Import 只是我可以使用的工作表名称的一个示例,但最终该工作表名称应该是存储在 desArr(0) 中的内容,但这与 Sheets("Import") 不同。在这种情况下,导入将是选项卡名称上显示的内容,以及我认为您建议的内容,但如果用户将导入更改为导出,那么 Sheets("Import") 将返回错误。
  • 那将永远起作用。忘记你的阵列。你知道你的工作表是Import,它永远不会改变,那么为什么要把它存储在一个数组中呢?只需将Import 用作文字即可。
猜你喜欢
  • 1970-01-01
  • 2019-01-21
  • 2016-11-04
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2013-11-23
相关资源
最近更新 更多