Anzeige
Archiv - Navigation
1264to1268
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: Zellbereiche unformatiert kopieren

VBA: Zellbereiche unformatiert kopieren
Fritz_W
Hallo Forumsbesucher,
ich würde gerne per VBA die Zellinhalte der Zellbereiche H7:J30, H36:J39; H42:J43 und H46:J46 kopieren (in der Beispieltabelle die Zellen mit gelbem Hintergrund) und unformatiert an anderer Stelle der Tabelle einfügen. Die Einfügeposition soll immer durch die erste leere Zelle in Zeile 7 bestimmt (insgesamt sind maximal 44 Kopien möglich), die (möglichen) Einfügepositionen sind in der Beispieltabelle jeweils durch die eingerahmten Zellen ohne gelben Hintergrund gekennzeichnet.
Wenn also die Zelle K7 leer ist, sollte das Makro in die Spalten K bis M kopieren, beim nächsten Kopiervorgang in die Spalten O bis Q, beim letzten möglichen (44. Kopiervorgang) sollten die Werte in die Spalten GA bis GC eingefügt werden.
Zur Veranschaulichung füge ich eine Beispieldatei bei.
Ich bedanke mich im Voraus für eure Unterstützung.
mfg
Fritz
https://www.herber.de/bbs/user/80320.xlsx
AW: VBA: Zellbereiche unformatiert kopieren
27.05.2012 00:31:48
Matze,Matthias
Hallo Fritz_W,
Das geht doch per Hand ohne Makro..
Oben die 3 Spalten markieren - kopieren
Die 3 neuen Spalten markieren - "Einfügen-WERTE" wählen. fertig
Gruß Matze
AW: VBA: Zellbereiche unformatiert kopieren
27.05.2012 07:42:06
Fritz_W
Hallo Matze,
da nicht die gesamte Spalte(n) kopiert werden sollen, sondern nur die entsprechenden Zellbereiche, brauche ich eine VBA-Lösung.
Viele Grüße
Fritz
AW: VBA: Zellbereiche unformatiert kopieren
27.05.2012 07:44:23
hary
Hallo Fritz

Sub WerteWeiter()
Dim zelle As Long
zelle = Cells(7, Columns.Count).End(xlToLeft).Column + 1
zelle = IIf(zelle = 11, zelle, zelle + 1)
If zelle = 183 Then MsgBox "letzter Kopiervorgang erreicht", vbInformation, "Info"
Range(Cells(7, zelle), Cells(30, zelle + 2)).Value = Range(Cells(7, 8), Cells(30, 10)).Value
Range(Cells(36, zelle), Cells(39, zelle + 2)).Value = Range(Cells(36, 8), Cells(39, 10)). _
Value
Range(Cells(42, zelle), Cells(43, zelle + 2)).Value = Range(Cells(42, 8), Cells(43, 10)). _
Value
Range(Cells(46, zelle), Cells(46, zelle + 2)).Value = Range(Cells(46, 8), Cells(46, 10)). _
Value
End Sub

gruss hary
Anzeige
AW: VBA: Zellbereiche unformatiert kopieren
27.05.2012 08:33:51
Fritz_W
Hallo Hary,
funktioniert wie gewünscht, ganz herzlichen Dank!
Viele Grüße
Fritz
AW: VBA: Zellbereiche unformatiert kopieren
27.05.2012 08:59:00
hary
Hallo Fritz
Geht noch ein weinig kuerzer.

Sub WerteWeiter()
Dim zelle As Long
zelle = Cells(7, Columns.Count).End(xlToLeft).Column + 1
zelle = IIf(zelle = 11, zelle, zelle + 1)
If zelle = 183 Then MsgBox "letzter Kopiervorgang erreicht", vbInformation, "Info"
Cells(7, zelle).Resize(24, 3).Value = Cells(7, 8).Resize(24, 3).Value
Cells(36, zelle).Resize(4, 3).Value = Cells(36, 8).Resize(4, 3).Value
Cells(42, zelle).Resize(2, 3).Value = Cells(42, 8).Resize(2, 3).Value
Cells(46, zelle).Resize(1, 3).Value = Cells(46, 8).Resize(1, 3).Value
End Sub

schoene Feiertage.
gruss hary
Anzeige
AW: VBA: Zellbereiche unformatiert kopieren
27.05.2012 09:19:10
Matze,Matthias
Moin Harry,
gleich mal eine Frage:
Wenn nun Zw. den Bereichen weitere Zeilen eingefügt/entfernt werden, wird ja dein bisheriger Code hinfällig.
Um dort jetzt Variabel zu werden , müßte ich wie vorgehen?
Die jeweiligen Bereich Festlegen und dann suchen wieweit diese auseinander liegen, kannst du mir da eine Lösung zaubern? - Danke
Gruß Matze
AW: @ Matze
28.05.2012 06:58:49
hary
Hallo Matze
Meine Loesung waere die Bereiche zu benennen.

Range("stand1").Row 'erste Zeilennummer
Range("stand1").Rows.Count + (Range("stand1").Row - 1)   'letzte Zeilennummer

gruss hary
Anzeige
AW: VBA: Zellbereiche unformatiert kopieren
27.05.2012 10:13:08
Fritz_W
;Hallo Hary,
noch einmal vielen Dank für Deine Hilfe.
Leider bin ich inzwischen auf ein Problem gestoßen und hoffe, dass man das noch lösen kann:
In der Datei, in der ich den Code verwenden will, stehen im 'Einfügebereich', also im Bereich der Spalten K bis GC in jeder vierten Spalte Formeln, mit denen ich die eingefügten Werte statistisch auswerten möchte. Formeln enthalten somit die Spalten N, R, V usw (in meiner Beispieldatei sind diese Zellen nicht eingerahmt). Der Code muss also prüfen, ob der Bereich mit den eingerahmten Zellen leer ist und entsprechend in den nächsten, leeren Bereich einfügen.
Ich hoffe, dass ich das Problem für Dich nachvollziehbar beschrieben habe und dass man das noch entsprechend berücksichtigen kann.
Wünsche Dir ebenfalls schöne Pfingstfeiertage und danke Dir nochmals für Deine Hilfe.
Schöne Grüße
Fritz
Anzeige
Warum hab ich das Gewusst,...
27.05.2012 10:32:03
Matze,Matthias
Hallo Fritz,
das ist nicht bös gemeint, aber warum wird wenn du doch so eine Tabelle hast, nicht die komplette Aufgabenstellung repräsentiert?
Steht denn in den Zeilen 31-35 ; 40-41 ; 44-45 auch noch etwas, bevor wir dann nochmal anfangen?
Gruß Matze
AW: Warum hab ich das Gewusst,...
27.05.2012 10:46:43
Fritz_W
Hallo Matze,
kein Problem, ich versteh Dich voll und ganz.
Konkret zu Deiner Frage: Auch in anderen Zellen können Formeln stehen, in jedem Fall sind die Zellen, in die die Werte eingefügt werden leer. Daher mein Hinweis in der ursprünglichen Aufgabenbeschreibung: 'Die Einfügeposition soll immer durch die erste leere Zelle in Zeile 7 bestimmt werden'.
Ich hoffe, ihr kommt damit klar, ansonsten bitte noch einmal melden. Möchte euch natürlich unnötige Arbeit ersparen und bin echt dankbar für jede Unterstützung.
Dir und allen anderen Helfern nochmals Dank für Euer Verständnis.
Beste Grüße
Fritz
Anzeige
AW: Warum hab ich das Gewusst,...
27.05.2012 18:52:51
fcs
Hallo Fritz,
mit folgender Anpassung in Matzes Lösung wird die nächste leere Spalte in Zeile 7 von links gesucht.
Gruß
Franz
Sub WerteWeiter()
Dim zelle As Long
zelle = Cells(7, 8).End(xlToRight).Column + 1
If zelle Mod 4 = 3 Then
If zelle = 183 Then MsgBox "letzter Kopiervorgang erreicht", vbInformation, "Info"
Cells(7, zelle).Resize(24, 3).Value = Cells(7, 8).Resize(24, 3).Value
Cells(36, zelle).Resize(4, 3).Value = Cells(36, 8).Resize(4, 3).Value
Cells(42, zelle).Resize(2, 3).Value = Cells(42, 8).Resize(2, 3).Value
Cells(46, zelle).Resize(1, 3).Value = Cells(46, 8).Resize(1, 3).Value
Else
MsgBox "4. Spalte des letzten Blocks enthält noch keine Formeln/Werte"
End If
End Sub

Anzeige
AW: Warum hab ich das Gewusst,...
27.05.2012 19:13:44
Fritz_W
Hallo Franz,
perfekt!
Ganz herzlichen Dank!
Beste Grüße
Fritz

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige