Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen mit VBA kopieren

Zellen mit VBA kopieren
Andy
Hallo zusammen,
wie kann ich mit VBA den Inhalt von mehreren Zelle in andere verbundene Zellen kopieren?
Quelle: A1-A10
Ziel: verbundene Zellen (B-D): B1-B10
Bisher habe ich das für eine Zelle so gemacht. MIt dem Macrorekorder kann ich das leider nicht aufzeichnen, da kommt immer eine Fehlermeldung, da die Zellen unterschiedlich sind.
Kopiert werden soll nur der Textinhalt. Sub copy() Range("A1").Select Application.CutCopyMode = False Selection.copy Range("B1").Select ActiveSheet.Paste Range("A2").Select Application.CutCopyMode = False Selection.copy Range("B2").Select ActiveSheet.Paste End Sub
Gruß Andy

Anzeige
AW: Zellen mit VBA kopieren
04.09.2012 20:48:51
fcs
Hallo Andy,
wie willst du das denn am Ende machen?
Willst du den Zellbereich markieren, deren Inhalte zusammengefasst werden sollen, und während der Makroausführung dann die Zelle wählen können, in die der Inhalt eingefügt wird?
Oder willst du mehrere Zellbereiche nacheinander systematisch abarbeiten?
Gruß
Franz

Anzeige
AW: Zellen mit VBA kopieren
04.09.2012 20:54:45
Andy
Hallo Franz,
ich möchte gerne den Inhalt von A1-A10 fest nach B1-B10 kopieren.
quasi
A1-A10 copy
B1-B10 paste (als Text)
Gruß Andy

AW: Inhalte Zellbereich in eine Zelle kopieren
04.09.2012 21:37:40
fcs
Hallo Andy,
hier meine Lösung.
Den Trenntext zwischen den Zelltexten muss du im Code anpassen.
Gruß
Franz
Sub Copy_A1A10_nach_B1B10()
On Error GoTo Beenden
With ActiveSheet
Call Copy_merged_text(rngZellen:=.Range("A1:A10"), _
rngTarget:=.Range("B1:B10"), _
strSep:=Chr(10), bolLeer:=True) 'Chr(10) = Zeilenschaltung als Trenntext
End With
Beenden:
End Sub
Sub Copy_merged_text(rngZellen As Range, rngTarget As Range, _
Optional strSep As String = "", _
Optional bolLeer As Boolean)
'Text in den Zellen des Zellbereichs wird in die Zielzelle eingefügt
'rngZellen = Zellbereich mit den Texten, die zusammengefast werden sollen
'rngTarget = Zelle in die zusammengefasster Text eingefügt werden soll
'strSep =    optionaler Trenntext zwischen den Zellinhalten - Vorgabe = Leerstring
'bolLeer =   Option wie Zellen mit Leerstring behandelt werden sollen, _
bei True werden Leerstrings in Text übernommen
Dim strText As String
Dim rngZelle As Range
For Each rngZelle In rngZellen.Cells
With rngZelle
If .Text  "" Or (.Text = "" And bolLeer = True) Then
strText = strText & IIf(strText = "", "", strSep) & .Text
End If
End With
Next rngZelle
rngTarget.Range("A1").Value = strText
End Sub

Anzeige
AW: Zellen mit VBA kopieren
04.09.2012 20:55:28
Matthias
Hallo

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
Gruß Matthias

AW: Zellen mit VBA kopieren
04.09.2012 21:00:21
Andy
Hallo Matthias,
Deine Lösung funktioniert. Danke zuerst einmal.
Habe noch eine Frage dazu: Wofür steht
Application.CutCopyMode = False
Gruß Andy

Anzeige
AW: Zellen mit VBA kopieren
04.09.2012 21:06:45
Matthias
Hallo

Range("A1:A10").Copy
With Range("B1:B10")
.PasteSpecial xlPasteFormulas
.Value = .Value
End With
Application.CutCopyMode = False

Tabelle1
verbundene Zellen B:D
im Zielbereich wird dann die Frml in Werte umgewandelt


 ABCD
111
222
333
444
555
666
777
888
999
101010

Formeln der Tabelle
ZelleFormel
A1=ZEILE()
A2=ZEILE()
A3=ZEILE()
A6=ZEILE()
A7=ZEILE()
A8=4+4
A9=ZEILE()
A10=ZEILE()


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
wofür steht Application.CutCopyMode = False
Lass es mal weg, dann siehst Du es ;-)
Gruß Matthias

Anzeige
Danke!
04.09.2012 21:11:20
Andy
Danke,
CutCopyMode = Kopiermodus abschneiden... naja, wer lesen kann ist klar im Vorteil ;-)

;-) Bitte ... owT
04.09.2012 21:12:54
Matthias

noch ne kleine Frage
04.09.2012 21:17:01
Andy
Hab noch ne kleine Frage:
ist es auch möglich den Inhalt von A1 + B1 zu kopieren und ihn in C1 als
=A1&" - "&B1

einzufügen?
Gruß Andy

Anzeige
ich denke B:D sind verbunden, doch nicht ?
04.09.2012 21:31:38
Matthias
Hallo
Dim X&
For X = 1 To 10
Cells(X, 3) = Cells(X, 1) & "-" & Cells(X, 2)
Next
Tabelle1

 ABCDE
1A1A-1
2B2B-2
3C3C-3
4D4D-4
5E5E-5
6F6F-6
7G7G-7
8H8H-8
9I9I-9
10J10J-10

Formeln der Tabelle
ZelleFormel
B1=ZEILE()
B2=ZEILE()
B3=ZEILE()
B4=ZEILE()
B5=ZEILE()
B6=ZEILE()
B7=ZEILE()
B8=ZEILE()
B9=ZEILE()
B10=ZEILE()


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
nur vom Prinzip her
04.09.2012 22:36:24
Andy
@Matthias,
die zweite Frage war nicht auf das Beispiel bezogen. Ich wollte dies nur grundsätzlich mal wissen.
Danke für die Unterstützung.
Gruß Andy
;

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
Anzeige

Infobox / Tutorial

Zellen mit VBA kopieren und einfügen


Schritt-für-Schritt-Anleitung

Um den Inhalt von Zellen mit VBA zu kopieren und einzufügen, kannst du folgende Schritte befolgen:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen und dann auf Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub Copy_A1A10_nach_B1B10()
       On Error GoTo Beenden
       With ActiveSheet
           Call Copy_merged_text(rngZellen:=.Range("A1:A10"), _
           rngTarget:=.Range("B1:B10"), _
           strSep:=Chr(10), bolLeer:=True) 'Chr(10) ist eine Zeilenschaltung
       End With
    Beenden:
    End Sub
    
    Sub Copy_merged_text(rngZellen As Range, rngTarget As Range, _
    Optional strSep As String = "", _
    Optional bolLeer As Boolean)
       Dim strText As String
       Dim rngZelle As Range
       For Each rngZelle In rngZellen.Cells
           With rngZelle
               If .Text <> "" Or (.Text = "" And bolLeer = True) Then
                   strText = strText & IIf(strText = "", "", strSep) & .Text
               End If
           End With
       Next rngZelle
       rngTarget.Range("A1").Value = strText
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle Copy_A1A10_nach_B1B10 aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler beim Ausführen des Makros: Stelle sicher, dass der Zellbereich A1:A10 in der aktiven Tabelle existiert und dass die Zielzellen B1:B10 nicht mit anderen Daten gefüllt sind.
  • Verbundene Zellen: Wenn du mit verbundenen Zellen arbeitest, kann es zu Problemen kommen. Überprüfe, ob die Zielzellen verbunden sind, und trenne sie gegebenenfalls vor dem Kopieren.

Alternative Methoden

Falls du eine einfachere Methode bevorzugst, kannst du die Copy und PasteSpecial Methoden verwenden:

Range("A1:A10").Copy
Range("B1:B10").PasteSpecial xlPasteValues ' Nur Werte einfügen
Application.CutCopyMode = False

Diese Methode ist besonders nützlich, wenn du nur die Werte (ohne Formatierungen) einfügen möchtest.


Praktische Beispiele

  1. Kopieren von Zellen mit Formeln:

    Range("A1:A10").Copy
    Range("B1:B10").PasteSpecial xlPasteFormulas
    Application.CutCopyMode = False
  2. Kopieren und Einfügen von Zelleninhalt:

    Range("A1").Value = Range("B1").Value & " - " & Range("C1").Value

Hierbei wird der Inhalt aus B1 und C1 in A1 kombiniert.


Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um das Flackern des Bildschirms während der Ausführung des Makros zu vermeiden.
  • Vergiss nicht, Application.CutCopyMode = False am Ende deines Makros zu verwenden, um den Kopiermodus zu beenden und den Speicher zu schonen.
  • Um mehrere Zellen zu kopieren, kannst du auch Union verwenden, um mehrere Bereiche auszuwählen.

FAQ: Häufige Fragen

1. Wie kann ich den Inhalt von mehreren Zellen in eine einzelne Zelle kopieren? Du kannst den Inhalt der Zellen in einer Schleife zusammenfassen und in eine Zielzelle setzen. Beispiel:

Dim strText As String
For Each cell In Range("A1:A10")
    strText = strText & cell.Value & " "
Next cell
Range("B1").Value = Trim(strText)

2. Was bedeutet Application.CutCopyMode = False? Diese Zeile beendet den Kopiermodus und entfernt die Auswahl des kopierten Bereichs. Es ist nützlich, um den Bildschirm sauber zu halten.

3. Kann ich VBA verwenden, um verbundene Zellen zu kopieren? Ja, du kannst verbundene Zellen kopieren, aber achte darauf, dass die Zielzellen nicht verbunden sind, um Fehler zu vermeiden.

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