Excel 如何获取活动NamedSheetView类的name属性?
Excel现在可以存储个人筛选视图,以帮助在同时使用的文档中进行协作。 我只能找到外接程序的Microsoft文档,但该功能在Microsoft 365 MSO(16.0.13127.20266)32位的Excel版MS Excel中可用 我试图存储当前应用的NamedSheetView名称属性(用于以后的还原选项),但 此代码失败:Excel 如何获取活动NamedSheetView类的name属性?,excel,vba,office365,class-properties,Excel,Vba,Office365,Class Properties,Excel现在可以存储个人筛选视图,以帮助在同时使用的文档中进行协作。 我只能找到外接程序的Microsoft文档,但该功能在Microsoft 365 MSO(16.0.13127.20266)32位的Excel版MS Excel中可用 我试图存储当前应用的NamedSheetView名称属性(用于以后的还原选项),但 此代码失败: Dim sh1 As Worksheet Dim xViewName As String Set sh1 = ThisWorkbook.Sheets(Sheet
Dim sh1 As Worksheet
Dim xViewName As String
Set sh1 = ThisWorkbook.Sheets(Sheet6.Name)
xViewName = sh1.NamedSheetView.Name
但是,此代码可以工作(使用以前创建的“测试”视图):
如果此NamedSheetView是一个集合,我应该能够获取item属性,但这些代码也会失败:
strName = sh1.NamedSheetViews.GetItem(1).Name
strName = sh1.NamedSheetViews.Item(1).Name
是否有人成功获取过工作表的当前名称SheetView?以下是我探测未知对象属性的方法: 我从对对象的引用开始。如果我不知道对象是什么,我会使用
TypeName()
返回它的类名(数据类型)。然后声明该数据类型的变量。清洗、冲洗并在我钻取结构时重复。声明变量后,选择该变量并按F1键打开该数据类型的Microsoft帮助文档
模块代码
即时窗口测试
解决方案:
(感谢TinMan的大力帮助)
应用程序:
sh1.NamedSheetViews.GetItem(ActiveSheetView).Activate
谢谢你,TinMan,这帮了大忙。现在我可以遍历集合了。我仍然面临一个大问题:如何识别活动名称SheetView(工作表上当前活动的名称),如果有。不幸的是,NamedSheetView和集合一样,只有父、计数、名称和应用程序属性。不幸的是,我也找不到当前在图纸属性中应用的名称SheetView的任何痕迹。如何识别当前选择的名称SheetView?我只能找到Javascript API代码:GetActive()找到了!将图纸视图设置为名称图纸视图将图纸sh1设置为工作表集sh1=此工作簿。图纸(Sheet6.Name)设置为图纸视图=sh1.NamedSheetView。GetActive@LegrA干得好!
Sub WhatIsThat()
Const TestName As String = "TestName"
Dim View As NamedSheetViewCollection
Set View = Sheet6.NamedSheetViews
On Error Resume Next
View.GetItem(TestName).Delete
On Error GoTo 0
View.Add TestName
Dim SheetView As NamedSheetView
Dim n As Long
For n = 0 To View.Count - 1
Debug.Print View.GetItemAt(n).Name
Set SheetView = View.GetItemAt(n)
Debug.Print SheetView.Name
Next
Stop
End Sub
?TypeName(Sheet6.NamedSheetViews)
?View.GetItemAt(0).Name
?TypeName( View.GetItemAt(0))
Dim SheetView As NamedSheetView
Dim sh1 As Worksheet
Dim ActiveSheetView as string
Set sh1 = ThisWorkbook.Sheets(Sheet6.Name)
Set SheetView = sh1.NamedSheetViews.GetActive
ActiveSheetView = SheetView.Name
sh1.NamedSheetViews.GetItem(ActiveSheetView).Activate