Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Macro auf markierte Zeilen anwenden

Forumthread: Macro auf markierte Zeilen anwenden

Macro auf markierte Zeilen anwenden
11.09.2018 13:55:04
Sven
Hallo Forum,
Ich komme leider nicht weiter und habe auch nicht die VBA Kenntnisse.
Ich habe ein Macro was mir eine Zeile Kopiert und darunter dann einfügt.
Dieses Macro würde ich gern auf mehrere Zeilen ausführen die ich einfach mit der Maus markiere.
So Sieht mein derzeitiges Macro aus:
Sub IST_SOLL1()
Dim Row1 As Integer
Dim row2 As Integer
iRow = 1
Row1 = ActiveCell.row
'Ausgwählte zeile kopieren
Rows(Row1).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Rows(Row1).Select
Application.CutCopyMode = False
'Texte eintragen
Cells(Row1, 1).Value = "IST"
Cells(Row1 + 1, 1).Value = "SOLL"
'Zellen farblich machen
Cells(Row1 + 1, 1).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub

Erweitert habe ich es in soweit das er es mit einer Do While Schleife ausführt:
Sub IST_SOLL2()
Dim iRow As Integer
Dim dValue As Double
Dim Row1 As Integer
Dim row2 As Integer
iRow = 1
'Schleife mit 2 Bedingungen 1) Neben ausgewählte Zelle hat Inhalt und 2) ausgwählte Zelle ist  _
leer
Do While Not IsEmpty(ActiveCell(iRow, 2)) And IsEmpty(ActiveCell)
Row1 = ActiveCell.row
'Ausgwählte zeile kopieren
Rows(Row1).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Rows(Row1).Select
Application.CutCopyMode = False
'Texte eintragen
Cells(Row1, 1).Value = "IST"
Cells(Row1 + 1, 1).Value = "SOLL"
'Zellen farblich machen
Cells(Row1 + 1, 1).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ActiveCell.Offset(1, 0).Select
Loop
End Sub
In soweit funktionieren die Macros schon.
Nur bekomme ich es halt nicht so hin das Macro auf markierte Zeilen nur auszuführen.
Würde mich über eure Hilfe riesig freun :)
LG Sven
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macro auf markierte Zeilen anwenden
11.09.2018 15:23:02
ChrisL
Hi Sven
z.B.
Sub t()
Dim objZeile As Object, arrZeilen() As Variant
Dim lngCounter As Long
For Each objZeile In Selection.Rows
ReDim Preserve arrZeilen(lngCounter)
arrZeilen(lngCounter) = objZeile.Row
lngCounter = lngCounter + 1
Next objZeile
For lngCounter = UBound(arrZeilen) To LBound(arrZeilen) Step -1
Rows(arrZeilen(lngCounter)).Copy
Rows(arrZeilen(lngCounter)).Insert
Cells(arrZeilen(lngCounter), 1).Value = "IST"
With Cells(arrZeilen(lngCounter) + 1, 1)
.Value = "SOLL"
.Interior.Pattern = xlSolid
.Interior.PatternColorIndex = xlAutomatic
.Interior.Color = 15773696
End With
Next lngCounter
Application.CutCopyMode = False
End Sub
cu
Chris
Anzeige
AW: Macro auf markierte Zeilen anwenden
12.09.2018 13:22:43
Sven
Hallo Chris,
ich danke dir für deine Schnelle Antwort.
Genau das habe ich gesucht es funktioniert einwandfrei :)
Gruß Sven
AW: Macro auf markierte Zeilen anwenden
11.09.2018 16:27:34
Gerd
Moin Sven,
die eine Frage ist, ob SOLL + IST im Wechsel in jede markierte Zeile sollen,
die nächste, ob du stets in Spalte A + B deine beiden Bedingungen abgleichen möchtest?
Gruß Gerd
Anzeige
AW: Macro auf markierte Zeilen anwenden
12.09.2018 13:25:40
Sven
Hallo Gerd,
auch dir danke für deine Hilfe das von Chris funktioniert einwandfrei.
Der 2te versuch von mir war nur das was ich bisher hinbekommen hatte mit dem Wunsch einfach zeilen mit der Maus zu markieren wo er dan das ist soll mackro drauf ausführen sollte.
Gruß Sven
Anzeige
Anzeige

Infobox / Tutorial

Macro auf markierte Zeilen anwenden


Schritt-für-Schritt-Anleitung

Um ein Macro auf markierte Zeilen in Excel anzuwenden, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen. Diese Anleitung basiert auf dem Beitrag von ChrisL und ermöglicht es dir, die gewünschten Makros effizient auszuführen.

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

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub MacroAufMarkierteZeilen()
       Dim objZeile As Object, arrZeilen() As Variant
       Dim lngCounter As Long
       For Each objZeile In Selection.Rows
           ReDim Preserve arrZeilen(lngCounter)
           arrZeilen(lngCounter) = objZeile.Row
           lngCounter = lngCounter + 1
       Next objZeile
       For lngCounter = UBound(arrZeilen) To LBound(arrZeilen) Step -1
           Rows(arrZeilen(lngCounter)).Copy
           Rows(arrZeilen(lngCounter)).Insert
           Cells(arrZeilen(lngCounter), 1).Value = "IST"
           With Cells(arrZeilen(lngCounter) + 1, 1)
               .Value = "SOLL"
               .Interior.Pattern = xlSolid
               .Interior.PatternColorIndex = xlAutomatic
               .Interior.Color = 15773696
           End With
       Next lngCounter
       Application.CutCopyMode = False
    End Sub
  4. Schließe den VBA-Editor.

  5. Markiere die Zeilen in deinem Excel-Blatt, auf denen das Macro angewendet werden soll.

  6. Drücke ALT + F8, wähle "MacroAufMarkierteZeilen" aus und klicke auf "Ausführen".

Jetzt solltest du sehen, dass das Macro korrekt auf die markierten Zeilen angewendet wird.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004 - Anwendung oder Objekt definieren"

    • Lösung: Stelle sicher, dass die Zeilen, die du markiert hast, tatsächlich Daten enthalten. Das Macro kann nur auf markierte Zeilen zugreifen, die Daten haben.
  • Fehler: "Das Clipboard ist leer oder wurde gelöscht"

    • Lösung: Überprüfe, ob etwas in die Zwischenablage kopiert wurde, bevor du das Macro ausführst. Gehe sicher, dass die ausgewählten Zeilen nicht leer sind.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch die folgende Methode ausprobieren:

  1. Formeln verwenden: Wenn es dir nur um das Einfügen von "IST" und "SOLL" in benachbarte Zellen geht, kannst du einfache Formeln verwenden, um die gewünschten Werte zu erzeugen, ohne ein Macro zu schreiben.

  2. Pivot-Tabellen: Für komplexere Datenanalysen kannst du auch Pivot-Tabellen verwenden, um Daten zu aggregieren und zu analysieren.


Praktische Beispiele

  1. Beispiel – Macro auf mehrere Zeilen anwenden:

    • Angenommen, du hast in den Zeilen 2 bis 5 Daten, markiere diese und führe das Macro aus. Du wirst sehen, dass die Zeilen 6 bis 9 erstellt werden, mit "IST" in Spalte A und "SOLL" in Spalte B.
  2. Beispiel – Unterschiedliche Farben:

    • Du kannst die Hintergrundfarbe für "IST" und "SOLL" anpassen, indem du die RGB-Werte im Code änderst. Zum Beispiel:
    .Interior.Color = RGB(255, 0, 0) ' Rot

Tipps für Profis

  • Makros optimieren: Optimiere dein Macro, indem du es so schreibst, dass es weniger Rechenleistung benötigt. Vermeide beispielsweise wiederholte Zugriffe auf die Excel-Oberfläche.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deine Makros, um unerwartete Fehler abzufangen.
  • Dokumentation: Kommentiere deinen Code gründlich, damit andere (oder du selbst in der Zukunft) verstehen, was jede Zeile bewirken soll.

FAQ: Häufige Fragen

1. Frage: Kann ich das Macro auch auf nicht zusammenhängende Zeilen anwenden?
Antwort: Ja, du kannst das Macro anpassen, um auch nicht zusammenhängende Zeilen zu bearbeiten, indem du die Auswahl von Zellen anpasst.

2. Frage: Funktioniert das Macro in allen Excel-Versionen?
Antwort: Das Macro sollte in den meisten modernen Excel-Versionen (2010 und später) funktionieren, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige