Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
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

VBA Zellbereich kopieren

VBA Zellbereich kopieren
Karin
Hallo Forum,
ich muss von einem Tabellenblatt bei bestimmten Bedingungen Zellbereiche in ein anderes Tabellenblatt kopieren. Eigentlich leicht, dachte ich ... In den XL-Beispielen habe ich auch ein wunderbares Makro gefunden, das per Doppelklick den gesamten Zellbereich in das zweite Tabellenblatt kopiert. Ich komme nur nicht mit der Spalte im zweiten Tabellenblatt klar. Das Makro kopiert ab Spalte A im Tabellenblatt 1. Ich möchte aber, dass ab Spalte B kopiert wird, im zweiten Blatt aber in Spalte A eingefügt wird.
Im Tabellenblatt 2 muss ich unter die kopierten Werte ein "K" einfügen. Mache ich das gleich hinter dem Namen, funktioniert das nächste Kopieren. Wenn ich das "K" z. B. erst ab Spalte "I" einfüge, werden die Werte überschrieben.
Ich lade eine Datei hoch, damit meine Erklärungen verständlicher werden. Der obere Bereich auf dem 2. Blatt ist manuell kopiert (so sollte es aussehen), der gelb markierte Bereich ist per Makro übertragen und stimmt nicht.
Wäre toll, wenn mir jemand auf die Sprünge helfen könnte!!
Im Voraus besten Dank!
Karin

Die Datei https://www.herber.de/bbs/user/63174.xls wurde aus Datenschutzgründen gelöscht


9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Zellbereich kopieren
14.07.2009 19:22:39
Christian
Hallo Karin,
hiermit sollte es klappen...
Sub CopyNow(iRow As Integer)
Dim wks As Worksheet
Dim iRowL As Integer, iColL As Integer
Application.ScreenUpdating = False
Set wks = Worksheets("Krank")
iRowL = wks.Cells.Find("*", , xlValues, 2, 1, 2, 0, 0).Row + 1
iColL = Cells(iRow, Columns.Count).End(xlToLeft).Column
Cells(iRow, 2).Resize(, iColL - 1).Copy wks.Cells(iRowL, 1)
Application.CutCopyMode = False
wks.Columns.AutoFit
Application.ScreenUpdating = True
End Sub

Gruß
Christian
Anzeige
Danke an Christian und Erich
14.07.2009 20:24:59
Karin
Hallo,
alle drei Lösungsvorschläge sind SUPER! Ob ich das auch mal kapiere? Aber mit der Unterstützung aus diesem wunderbaren Excel-Forum bin ich guten Mutes.
Herzlichen Dank und liebe Grüße
Karin
AW: VBA Zellbereich kopieren
14.07.2009 20:22:34
Karin
Hallo Robert,
nicht ganz, die Werte, die ich unter die kopierten Zellen schreibe, werden überschrieben.
Aber trotzdem herzlichen Dank für deine Hilfe. Ich habe die Lösung von Christian und Erich.
Gruß
Karin
..wo ist der unterschied..
15.07.2009 05:55:30
robert
hi,
nur zur info-wo schreibst du was hin?
was wird überschrieben?
habe alle lösungen getestet, gleiches ergebnis...
oder doch nicht-und ich seh es nicht?
gruß
robert
Anzeige
Da ist der Unterschied
15.07.2009 08:40:55
Erich
Hi Robert,
es liegt wohl an diesem Satz:
"Im Tabellenblatt 2 muss ich unter die kopierten Werte ein "K" einfügen. Mache ich das gleich hinter dem Namen,
funktioniert das nächste Kopieren. Wenn ich das "K" z. B. erst ab Spalte "I" einfüge, werden die Werte überschrieben."
In deinem Vorschlag bestimmst du die erste freie Zielzeile mit
iRowL = wks.Cells(Rows.Count, 5).End(xlUp).Row + 1
abhängig vom letzten Eintrag in Spalte E. Wenn hier zufällig ein "K" steht, läuft es richtig,
wenn nicht, wird die letzte Zeile (mit den "K"s) überschrieben.
Mein Vorschlag
iRowL = .Cells(.Rows.Count, 1).End(xlUp).Row + 2
geht davon aus, dass in die 1. Spalte (Name) keine "K"s geschrieben werden,
die freie Zeile für die "K"s entsteht durch das "+ 2".
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Danke Erich,hab flüchtig gelesen :o) owT
15.07.2009 09:08:33
robert
AW: VBA Zellbereich kopieren
14.07.2009 19:23:10
Erich
Hi Karin,
probier mal

Sub CopyNow(iRow As Integer)
Dim wks As Worksheet, iRowL As Long, lngC As Long
Set wks = Worksheets("Krank")
iRowL = wks.Cells(Rows.Count, 1).End(xlUp).Row + 2
lngC = Cells(iRow, Columns.Count).End(xlToLeft).Column
Cells(iRow, 2).Resize(, lngC - 1).Copy wks.Cells(iRowL, 1)
wks.Columns.AutoFit
End Sub
'   Application.ScreenUpdating = False  ' ist überflüssig
'   Application.CutCopyMode = False  ' ist überflüssig
'   Application.ScreenUpdating = True  ' ist überflüssig
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
noch ne Version
14.07.2009 19:24:54
Erich
Hi Karin,
oder so:

Sub CopyNow(iRow As Integer)
Dim iRowL As Long, lngC As Long
With Worksheets("Krank")
iRowL = .Cells(.Rows.Count, 1).End(xlUp).Row + 2
lngC = Cells(iRow, Columns.Count).End(xlToLeft).Column
Cells(iRow, 2).Resize(, lngC - 1).Copy .Cells(iRowL, 1)
.Columns.AutoFit
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige