Forums Neueste Beiträge
 

Range auf anderes/neues Worksheet kopieren

30/06/2010 - 17:09 von Stefan Dase | Report spam
Moin allerseits,

ich versuche in Excel 2007 ein bekanntes Range auf einen Bereich in
einer neuen Arbeitsmappe zu kopieren. Folgenden Code verwende ich momentan:

Public Function InsertNewSheet(WorksheetName As String, _
Header As Excel.Range)

Set m_oOutputSheet = m_oOutputWorkbook.Worksheets.Add()
m_oOutputSheet.Name = WorksheetName

Header.Copy m_oOutputSheet.Range(Cells(1, 1), _
Cells(Header.Rows.count, Header.Columns.count))

m_lNextOutputRow = (Header.Rows.count + 1)
m_oOutputSheet.Cells(m_lNextOutputRow, 1).Value = _
"Keine Abweichungen gefunden"

End Function

So erhalte ich in der Zeile mit dem Copy den Fehler:
"Anwendungs- oder objektdefinierter Fehler"

Versuchsweise habe ich den Zielbereich mal folgendermaßen angegeben:

Header.Copy m_oOutputSheet.Range("A1", "V7"))

Fehlermeldung:
"Die Copy-Methode des Range-Objektes konnte nicht ausgeführt werden."

Wenn ich nur versuche, ein Range nach folgendem Schema zuzuweisen:

Public Property Get Header() As Excel.Range
Set Header = m_oSheet.Range(Cells(1, 1), Cells(7, 23))
End Property

Kommt dieser Fehler:
"Die Methode 'Range' für das Objekt '_Worksheet' ist fehlgeschlagen"

Habe ich hier einen Denkfehler?
Stefan
 

Lesen sie die antworten

#1 Andreas Killer
30/06/2010 - 18:06 | Warnen spam
Am 30.06.2010 17:09, schrieb Stefan Dase:

Header.Copy m_oOutputSheet.Range(Cells(1, 1), _
Cells(Header.Rows.count, Header.Columns.count))


...
So erhalte ich in der Zeile mit dem Copy den Fehler:
"Anwendungs- oder objektdefinierter Fehler"


Das wird daran liegen das Deine Referenzierung falsch ist, denn das
m_oOutputSheet ist nicht das aktive Blatt (wenn dieser Fehler kommt).

Du versuchst einen Range über mehrere Sheets zu bilden, das ist nicht
erlaubt.

"m_oOutputSheet.Range" verweist auf Tabelle m_oOutputSheet und
"Cells(1, 1)" verweist auf das aktuelle Blatt.

So...

With m_oOutputSheet
Header.Copy .Range(.Cells(1, 1), .Cells(Header.Rows.Count, _
Header.Columns.Count))
End With

...wàre es richtig(er), allerdings ist es nicht nötig den Zielbereich
in der Größe zu dimensionieren. Gibst Du statt dessen nur eine Zelle
an übernimmt Excel die Dimensionierung von sich aus.

Header.Copy m_oOutputSheet.Cells(1, 1)

Das tut's auch und ist viel einfacher.

Andreas.

Ähnliche fragen