【发布时间】:2016-12-09 07:25:01
【问题描述】:
我正在使用 Excel 2010 进行一些自动化操作。
简而言之,我用这种方法新建了一个工作簿:
With CreateObject("Excel.Application")
Set NewBook = .Workbooks.Add
.Visible = True
End With
With NewBook
Set WS = NewBook.Sheets("Sheet1")
End With
现在我想创建一个冻结窗格。
我已经尝试在this page 上使用 select 和 ActiveWindow:
WS.Range("F4").Select
ActiveWindow.FreezePanes = True
不知何故,在编辑不同的文件时,.select 方法总是选择原始文件而不是添加的书。
然后我查看this page 并尝试:
NewBook.activate
With ActiveWindow
If .FreezePanes Then .FreezePanes = False
.SplitColumn = 5
.SplitRow = 4
.FreezePanes = True
End With
没有用,冻结窗格是在原始文件上创建的。
以下操作也不起作用:
With NewBook
If .FreezePanes Then .FreezePanes = False
.SplitColumn = 5
.SplitRow = 4
.FreezePanes = True
End With
不确定我的 .activate 方法是否错误,或者 ActiveWindow 是否错误,或者 .select 是否错误。非常感谢任何人都可以提供帮助。
【问题讨论】:
-
另外,要创建冻结窗格,VBA 似乎总是需要 ActiveWindow,有没有办法绕过它?
-
没有。它是窗口的属性,而不是工作表的属性。您需要使用
NewBook.Application.ActiveWindow.FreezePanes = True或NewBook.Windows(1).FreezePanes = True -
您正在创建一个新的 Excel 实例,因此您需要明确引用该实例。
-
感谢@Rory 和 Tim,它在我使用 NewBook.Application.ActiveWindow 时有效
标签: vba excel excel-2010