2013-12-19 11 views
8

Ich habe einen Sub, die einen Header aus einer Vorlage einfügt und friert die oberste Zeile des aktiven Arbeitsblatt, das als, geschriebenExcel VBA - Get übergeordnete Fenster Arbeitsblatt

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 

Ich will, um sie in eine Funktion, an die das Blatt übergeben wird, in das der Header eingefügt werden soll. So dass es geschrieben werden würde,

Function HeaderInsert(headerTemplate As Worksheet, contentSheet as Worksheet) 

ActiveSheet wird contentSheet, aber wie kann ich die Window von contentSheet bekommen?

Auch ist eine bessere Möglichkeit, das Kopieren und Einfügen zu tun?

Antwort

10

Ich glaube, Sie wollen contentSheet.Parent.Windows(1), zB:

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 

Was den besseren Weg einzufügen: headerTemplate.Rows ("1: 1") kopieren ActiveSheet.Rows ("1: 1".

)

generell möchten Sie avoid Select unless necessary.

+0

+ 1 schön Dode :) –

+0

+1 schön gemacht Geck ???? – brettdj

+1

@brettdj: Verdammt! Ich beschuldige Dougs ablenkenden Triple Hat! :) –

Verwandte Themen