Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1444to1448
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

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

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

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige