Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Range mit Variable funzt nicht nach Sheets.Add

Range mit Variable funzt nicht nach Sheets.Add
02.09.2015 21:29:20
Bert
Hallo zusammen,
merkwürdiges Problem: Nach 'Sheets.Add' funktioniert der folgende Code nicht mehr (Laufzeitfehler 1004)

Sub Daten_exportieren()
sName = ActiveSheet.Name
Sheets.Add.Name = "Exportliste" 
'hier kommt dann der Laufzeitfehler 1004:
Sheets(sName).Range(Columns(1), Columns(22)).SpecialCells _
(xlCellTypeVisible).Copy
End Sub
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Diese Variante mit Select funktioniert seltsamerweise:

Sub Daten_exportieren2()
sName = ActiveSheet.Name
Sheets.Add.Name = "Exportliste"
Sheets(sName).Select
Range(Columns(1), Columns(22)).SpecialCells _
(xlCellTypeVisible).Copy
End Sub
Nun möchte ich ja, wie allerorten zu Recht gefordert, möglichst ohne 'Select' auskommen.
Wer kann mir weiterhelfen?
Herzlichen Dank im Voraus,
Bert

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range mit Variable funzt nicht nach Sheets.Add
02.09.2015 21:37:13
Daniel
Hi
1. nach dem Sheets.Add ist das neu hinzugefügte Tabellenblatt das ActiveSheet
2. Zellbezüge (Range, Cells, Columns, Rows) ohne Tabellenblattangabe davor beziehen sich immer auf:
a) das aktive Sheet, wenn der Code in einem allgemeinen oder Userform-Modul steht
b) auf das Blatt des Moduls, wenn der Code in einem Tabellenblattmodul steht
das gilt auch, wenn der Zellbezug innerhalb einer Funktion steht, so wie bei Range(Columns(), Columns())
der Fehler kommt dann daher, dass die Range auf einem anderen Blatt liegen soll, als die Zellen die die Range definieren.
Richtig wäre also, wenn man Selectfrei arbeiten will:
Sheets(sName).Range(Sheets(sName).Columns(1), Sheets(sName).Columns(22)).SpecialCells _
(xlCellTypeVisible).Copy

man kann in solchen fällen aber oft die Resize-Funktion einsetzen, um den Code zu verkürzen:
Sheets(sName).Columns(1).Resize(, 22).SpecialCells(xlcelltypevisible).copy
Gruß Daniel

Anzeige
AW: Range mit Variable funzt nicht nach Sheets.Add
02.09.2015 22:14:38
Werner
Hallo Bert,
du kannst auch die Codezeilen in ein With - End With einbinden.
'hier kommt dann der Laufzeitfehler 1004:
With Sheets(sName)
.Range(.Columns(1), .Columns(22)).SpecialCells _
(xlCellTypeVisible).Copy
End With
Durch die Punkte vor Range und den beiden Columns wird auf das Tabellenplatz das du bei With angibst referenziert.
Gruß Werner

Anzeige
AW: Range mit Variable funzt nicht nach Sheets.Add
03.09.2015 09:50:45
Bert
Wow, so schnelle Antworten.
Vielen lieben Dank!
Ich hatte auch vermutet, dass es mit dem neuen aktiven Blatt zusammenhängt.
Ich dachte aber, der Vorspann 'Sheets(sName)...' würde für alles in der Zeile folgende gelten.
Viele Grüße,
Bert

AW: Danke für die Rückmeldung. o.w.T.
03.09.2015 09:55:22
Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige