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

Forumthread: VBA Kopieren / Einfügen mit Format

VBA Kopieren / Einfügen mit Format
05.11.2013 18:29:28
Stefan
Hallo,
ich habe ein kleines Problem :D ich lasse aus einem tabellenblatt etwas kopieren und in ein anderes einfügen mit Format. Nun das erste problem. Wenn die Überschrift Fett und darunter alles normal steht übernimmt er alles in Fett beim Einfügen. Hier mein Code
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$2" Then
Cells(2, 2) = "Nichts Ausgewählt"
End
End If
If Target.Address = "$B$2" Then
If Cells(2, 2) = "Nichts Ausgewählt" Then
End
Else
For intRow = 1 To 100
If Target.Value = Worksheets("DP").Cells(intRow, 1).Value Then
'Sheets("Auswahl").Range(Sheets("Auswahl").Cells(Target.Row, 5), Sheets(" _
Auswahl").Cells(Target.Row, 13)).Value = Sheets("DP").Range(Sheets("DP").Cells(intRow, 2), Sheets("DP").Cells(intRow, 10)).Value
Sheets("DP").Range(Sheets("DP").Cells(intRow, 2), Sheets("DP").Cells(intRow, 10) _
).Copy
Sheets("Auswahl").Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteFormats,  _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Auswahl").Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteValues
End If
Next intRow
End If
End If
End Sub

Nun mein zweites Problem. Da ich über ein Dropdown Menü verschiedene Punkte auswählen kann und über VBA das auch erkannt wird hab ich das Problem das ich bei zb mehreren Zeilen ein und den selben Namen habe. So hab ich die Tabellen vorne Verbunden und nun hab ich zb 3 Zeilen und nur noch "1" Punkt fürs Dropdown menü. Er erkennt das auch richtig und kopiert aber leider nur die erste Zeile und nicht die anderen beiden Zeilen die dazu gehören würden. Hoffe ich konnte das richtig erklären.
Vielen Dank für eure Hilfe

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Kopieren / Einfügen mit Format
05.11.2013 19:52:58
fcs
Hallo Stefan,
zum Problem "Fett in Überschriften" kann ich nichts sagen.
Problem verbundene Zellen in Spalte A des Blatts "DP".
Man kann prüfen, ob die Zelle, die mit dem gesuchten Wert zu einem verbundenen Zellbereich gehört.
Bei WAHR (True) werden dann alle die Zellen rechts der verbunden Zellen kopiert.
Nachfolgend dein Makro, wie es ggf. funktionieren könnte.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim intRow
If Target.Address = "$A$2" Then
Cells(2, 2) = "Nichts Ausgewählt"
ElseIf Target.Address = "$B$2" Then
If Cells(2, 2)  "Nichts Ausgewählt" Then
For intRow = 1 To 100
If Target.Value = Worksheets("DP").Cells(intRow, 1).Value Then
With Sheets("DP")
If .Cells(intRow, 1).MergeCells = True Then 'Zellen in Spalte A sind  _
verbunden
.Range(.Cells(intRow, 2), .Cells(intRow + _
.Cells(intRow, 1).MergeArea.Rows.Count - 1, 10)).Copy
Else
.Range(.Cells(intRow, 2), .Cells(intRow, 10)).Copy
End If
End With
With Sheets("Auswahl")
.Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
End If
Next intRow
End If
End If
End Sub

Anzeige
AW: VBA Kopieren / Einfügen mit Format
06.11.2013 07:40:13
Stefan
Hallo Franz,
Super genial ! Danke für die super schnelle Antwort. Das Funktioniert 1a !!!
Nun muss ich mir über das Überschrift Problem noch ne Lösung einfallen lassen :D
Stefan

AW: VBA Kopieren / Einfügen mit Format
06.11.2013 07:49:13
Stefan
Ich muss noch mal ne weitere Frage stellen zwecks einer anderen Schleife.
Vor dem einfügen der Daten sollen die Zellen vorher alle gelöscht werden. könnte ja sein das erst mehr Zellen kopiert wurden und bei einer erneuten auswahl weniger eingefügt werden. so stehen da noch daten die man eigentlich nicht mehr will.

Anzeige
AW: VBA Kopieren / Einfügen mit Format
06.11.2013 11:03:56
fcs
Hallo Stefan,
auf die Frage hab ich eigentlich gewartet - hatte aber die Hoffnung, dass du das alleine lösen kannst.
Mit den Ergänzungen werden im Blatt "Auswahl" ab Zeile 2 in den Spalten E:M vorhandene Zellinhalte und -formate gelöscht.
Die Zeilen mit "Application.EnableEvents" hab ich eingefügt, damit es nicht zu unnötigen Neustarts des Makros kommt, wenn Inhalte im Blatt "Auswahl" gelöscht bzw. eingefügt werden.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim intRow, lngSpalte
If Target.Address = "$A$2" Then
Cells(2, 2) = "Nichts Ausgewählt"
ElseIf Target.Address = "$B$2" Then
If Cells(2, 2)  "Nichts Ausgewählt" Then
With Sheets("Auswahl")
intRow = 2
'Zeilen hochzählen, bis zur 1. leeren Zeile in E:M
Do
'prüfen, ob Zellen in Spalten E bis M der Zeile leer sind
If Application.WorksheetFunction.CountA(.Range(.Cells(intRow, 5), _
.Cells(intRow, 14))) = 0 Then
If intRow > 2 Then
Application.EnableEvents = False
'Inhalte und Formate im Bereich E2:Mxxx löschen
.Range(.Cells(2, 5), .Cells(intRow - 1, 14)).Clear
Application.EnableEvents = True
End If
Exit Do
End If
intRow = intRow + 1
Loop
End With
For intRow = 1 To 100
If Target.Value = Worksheets("DP").Cells(intRow, 1).Value Then
With Sheets("DP")
If .Cells(intRow, 1).MergeCells = True Then 'Zellen in Spalte A _
sind verbunden
.Range(.Cells(intRow, 2), .Cells(intRow + _
.Cells(intRow, 1).MergeArea.Rows.Count - 1, 10)).Copy
Else
.Range(.Cells(intRow, 2), .Cells(intRow, 10)).Copy
End If
End With
With Sheets("Auswahl")
Application.EnableEvents = False
.Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.EnableEvents = True
End With
Exit For
End If
Next intRow
End If
End If
End Sub

Anzeige
AW: VBA Kopieren / Einfügen mit Format
06.11.2013 11:21:47
Stefan
Ich sage mal ganz vielen lieben dank !!!! es klappt richtig super
;

Forumthreads zu verwandten Themen

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

VBA Kopieren und Einfügen mit Format


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und gehe zum VBA-Editor (drücke ALT + F11).
  2. Wähle das entsprechende Arbeitsblatt aus, in dem du das Makro implementieren möchtest.
  3. Füge den untenstehenden Code in das Codefenster des Arbeitsblatts ein:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim intRow As Integer
    If Target.Address = "$A$2" Then
        Cells(2, 2) = "Nichts Ausgewählt"
    ElseIf Target.Address = "$B$2" Then
        If Cells(2, 2) <> "Nichts Ausgewählt" Then
            With Sheets("Auswahl")
                ' Alte Inhalte löschen
                .Range(.Cells(2, 5), .Cells(100, 14)).Clear
            End With

            For intRow = 1 To 100
                If Target.Value = Worksheets("DP").Cells(intRow, 1).Value Then
                    With Sheets("DP")
                        If .Cells(intRow, 1).MergeCells Then
                            .Range(.Cells(intRow, 2), .Cells(intRow + .Cells(intRow, 1).MergeArea.Rows.Count - 1, 10)).Copy
                        Else
                            .Range(.Cells(intRow, 2), .Cells(intRow, 10)).Copy
                        End If
                    End With

                    With Sheets("Auswahl")
                        .Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteFormats
                        .Cells(Target.Row, 5).PasteSpecial Paste:=xlPasteValues
                        Application.CutCopyMode = False
                    End With
                    Exit For
                End If
            Next intRow
        End If
    End If
End Sub
  1. Teste das Makro durch Auswahl eines Wertes aus dem Dropdown-Menü in Zelle B2.

Häufige Fehler und Lösungen

  • Problem: Formatierung wird nicht beibehalten.

    • Lösung: Stelle sicher, dass du xlPasteFormats im Code verwendest, um die Formatierung zu übernehmen.
  • Problem: Nur die erste Zeile wird kopiert.

    • Lösung: Überprüfe, ob du verbundene Zellen korrekt behandelst, wie im obenstehenden Code gezeigt.

Alternative Methoden

Eine Alternative zu VBA ist die Verwendung der "Einfügen mit Formatierung" Funktion in Excel. Du kannst die Daten manuell kopieren und im Zielblatt mit Rechtsklick -> Einfügen -> Einfügen mit Formatierung einfügen.


Praktische Beispiele

  • Beispiel 1: Du hast ein Dropdown-Menü in Zelle B2. Wenn du einen Namen auswählst, werden die entsprechenden Daten aus dem Blatt "DP" in das Blatt "Auswahl" kopiert, einschließlich der Formatierung (z. B. Fett oder kursiv).

  • Beispiel 2: Wenn du mehrere verbundene Zellen hast, wird der Code sicherstellen, dass alle relevanten Daten und deren Formatierungen kopiert werden.


Tipps für Profis

  • Verwende Application.EnableEvents = False vor dem Löschen und Einfügen von Inhalten, um unerwünschte Rekursionen zu vermeiden.
  • Teste deine Makros in einer Kopie deiner Arbeitsmappe, um Datenverlust zu vermeiden.
  • Nutze die Option "Fehlerbehandlung" in deinem VBA-Code, um unerwartete Fehler abzufangen und zu behandeln.

FAQ: Häufige Fragen

1. Wie kann ich die Formatierung beim Kopieren beibehalten?
Verwende PasteSpecial mit der Option xlPasteFormats, um sicherzustellen, dass die Formatierung beim Einfügen beibehalten wird.

2. Was mache ich, wenn der Code nicht funktioniert?
Überprüfe, ob die richtigen Zelladressen verwendet werden, und ob das Zielblatt korrekt benannt ist.

3. Wo kann ich VBA-Fehlerprotokolle sehen?
Aktiviere die Fehlerbehandlung in deinem Code, um spezifische Fehlermeldungen anzuzeigen, die dir helfen, Probleme zu identifizieren.

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