Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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
Inhaltsverzeichnis

blackout bei range copy

blackout bei range copy
12.02.2016 08:47:02
katharina
Werte VBA-Profis,
seit geraumer Zeit finde ich den Fehler nicht in folgender Sub. Ich möchte eigentlich nur einen Bereich von Tabelle I nach E kopieren. Aber egal was ich probiere, ich bekomme immer die Fehlermeldung 1004 (anwendungs- oder objektdefinierter fehler). Leider sehe ich nicht die Ursache dafür.
Für eure Hilfe, wäre ich sehr dankbar!
Katharina
Sub EingabeTabelleBauenTest()
SeqLng = 52
Spalte_Name = 3
Set tabE = Sheets("Eingabe")
Set tabI = Sheets("Import")
'Sequenzliste übertragen
tabE.Range(Cells(3, 3), Cells(2 + SeqLng, 3)) = tabI.Range(Cells(8, Spalte_Name), Cells(7 +  _
SeqLng, Spalte_Name))
'Dim SeqList As Range
'SeqList = tabI.Range(Cells(8, Spalte_Name), Cells(7 + SeqLng, Spalte_Name))
'tabE.Range(Cells(3, 3), Cells(2 + SeqLng, 3)) = SeqList
'tabI.Range(Cells(8, Spalte_Name), Cells(7 + SeqLng, Spalte_Name)).Copy
'    tabE.Range(Cells(3, 3), Cells(2 + SeqLng, 3)).Paste
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: blackout bei range copy
12.02.2016 08:59:15
Nepumuk
Hallo,
versuch es mal so:
With tabE
    .Range(.Cells(3, 3), .Cells(2 + SeqLng, 3)) = _
        tabI.Range(tabI.Cells(8, Spalte_Name), tabI.Cells(7 + SeqLng, Spalte_Name))
End With

Gruß
Nepumuk

AW: blackout bei range copy
12.02.2016 09:39:00
Daniel
Hi
die Ursache ist, dass es bei Range(Cells(), Cells()) nicht ausreicht das Tabellenblatt vor der Range hinzuschreiben, sondern dass es auch vor den beiden Cells innerhalb der Range stehen muss.
im Gegenteil, vor der Range ist die Tabellenblattangabe sogar unnötig und kann entfallen (ausser der Code liegt in einem Tabellenblattmodul, dann muss das Tabellenblatt vor der Range UND vor den Cells stehen).
Hintergrund ist, dass Zellbezüge (Cells, Range, Columns, Rows) ohne Tabellenblattangabe sich immer auf das aktive (bzw das Modultabellenblatt) beziehen, auch wenn diese Funktionen in andere Funktionen eingebettet sind.
Richtig wäre also
tabE.Range(tabE.Cells(3, 3), tabE.Cells(2 + SeqLng, 3)) = tabI.Range(tabI.Cells(8, Spalte_Name), tabI.Cells(7 + SeqLng, Spalte_Name))

bzw wenn der Code in einem allgemeinen Modul steht:
Range(tabE.Cells(3, 3), tabE.Cells(2 + SeqLng, 3)) = Range(tabI.Cells(8, Spalte_Name), tabI.Cells(7 + SeqLng, Spalte_Name))
da das den Code etwas unübersichtlich macht, gibt es verschiedene Methoden das zu vereinfachen.
die WITH-Klammer hat Nepumuk schon gezeigt, allerdings bekommt man damit nur ein Tabellenblatt verkürzt, alle weitern müssten ausgeschrieben werden.
ich wende daher gerne statt dem Range(Cells, Cells) das Cells.Resize an, um einen grösseren Zellbereich zu beschreiben:
tabE.Cells(3, 3).Resize(SeqLng, 1) = tabI.Cells(8, Spalte_Name).Resize(SeqLng, 1)
gruß Daniel

Anzeige
AW: blackout bei range copy
12.02.2016 12:30:23
katharina
Hallo Nepumuk und Daniel,
ich Danke euch tausend Mal, es funktioniert endlich. Ohne eure Hilfe hätte ich die Lösung nicht gefunden.
Gruß Katharina

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige