Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用对象资源管理器中定义的工作表名称和工作簿定义设置工作表_Excel_Vba - Fatal编程技术网

Excel 使用对象资源管理器中定义的工作表名称和工作簿定义设置工作表

Excel 使用对象资源管理器中定义的工作表名称和工作簿定义设置工作表,excel,vba,Excel,Vba,因此,有几种方法可以在Excel中设置工作表 set WS = Sheets("Name Here!") set WS = WB.Sheets("Name Here!") set WS = shNameOfTheSheetObject 然而,似乎没有办法做到: set WS = WB.shNameOfTheSheetObject 我想知道,如果可能的话,我怎样才能得到这种类型的参考资料。我喜欢非常、非常明确地使用我的代码(可能太过了),如果知道我正在处理多个工作簿,这将非常有用 我认为通过代

因此,有几种方法可以在Excel中设置工作表

set WS = Sheets("Name Here!")
set WS = WB.Sheets("Name Here!")
set WS = shNameOfTheSheetObject
然而,似乎没有办法做到:

set WS = WB.shNameOfTheSheetObject

我想知道,如果可能的话,我怎样才能得到这种类型的参考资料。我喜欢非常、非常明确地使用我的代码(可能太过了),如果知道我正在处理多个工作簿,这将非常有用

我认为通过代码名访问的工作原理有点混乱。当您通过
ThisWorkbook.Worksheets(“SheetName”)
获取工作表时,您可以查询工作簿上的集合;使用代码名时,将获得包含项目的VBA项目的相应组件,该组件实现了
工作表
界面


两者都是相同的对象,但标识符的解析采用不同的路径:工作簿不知道VBA组件。因此,正如注释中提到的@Comintern,您只能使用包含VBA项目的项目名称作为进一步的限定符。该名称是通过“项目属性”对话框设置的名称。如果不更改它,它将始终是Excel中的
VBAProject
,这不是很有帮助

我不知道答案,但我猜问题在于
shnameofsheetobject
不是
WB
的属性。VB可能会在
WS=shName…
和背景中的工作表之间填充引用。您缺少设置对象的
Set…
部分。请使用代码名,而不是工作表名。然后,您可以直接访问它:
SheetCodeName
,假设您在同一个项目中,则不需要任何限定符。如果您在另一个项目中,它将是
ProjectCodeName.SheetCodeName
@Comintern:我正在使用代码名,这就是我试图解决的问题-如何使用ProjectCodeName.SheetCodeName,但要使用限定符。正如我提到的,我喜欢过度构建代码。如果你知道如何自我引用ProjectCodeName,那么你的评论的第二部分就足以回答我所寻找的问题。如果你能提供一个稍微少一些的例子来说明你在做什么,可能会有所帮助。可能包括
Dim
语句和
shnameofsheetObject
的赋值。快速展开-选择最高级别的对象是可以查看和编辑VBA项目名称的地方