Excel VBA - 获取工作表的父窗口

che*_*eak 9 excel vba excel-vba

我有一个Sub,它从模板中插入一个标题并冻结活动工作表的顶行,该行被写为,

Sub HeaderInsert(headerTemplate As Worksheet)
    headerTemplate.Rows("1:1").Copy
    ActiveSheet.Rows("1:1").Select
    ActiveSheet.Paste
    With ActiveWindow
        .SplitColumn = 0
        .SplitRow = 1
        .FreezePanes = True
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个函数,它传递工作表插入标题.所以它会写,

Function HeaderInsert(headerTemplate As Worksheet, contentSheet as Worksheet)
Run Code Online (Sandbox Code Playgroud)

ActiveSheetcontentSheet,但我怎么能得到WindowcontentSheet

还有一种更好的方法来复制和粘贴吗?

Dou*_*ncy 12

我想你想要contentSheet.Parent.Windows(1),例如:

Sub test()
Dim ws As Excel.Worksheet
Dim wb As Excel.Workbook

Set ws = ActiveSheet
Set wb = ws.Parent
Debug.Print wb.Windows(1).Caption
End Sub
Run Code Online (Sandbox Code Playgroud)

至于更好的粘贴方式:headerTemplate.Rows("1:1").复制ActiveSheet.Rows("1:1")

更一般地说,除非必要,否则您要避免Select.