Hallo zusammen,
ich bin kein VBA-Experte und arbeite in der Regel mit dem Aufzeichnen von Makros und der anschließenden Anpassung des VBA-Codes.
Ich habe nun folgendes Problem mit einem Makro in Excel:
Soll per Makro diejenige Zeile gelöscht werden, die die aktive Zelle enthält, so funktioniert es dann nicht korrekt, wenn die Zeile eine Zelle enthält, die vertikal mit anderen Zellen verbunden
ist. Wird der Löschvorgang von Hand ausgeführt, also die entsprechende Zeile durch Klick auf die Zeilennummer markiert und anschließend, nach rechtem Mausklick auf die Auswahl, aus dem Kontextmenü der Befehl
„Zellen löschen“ gewählt, so funktioniert die Löschung wie gewünscht. Zeichnet man diesen Vorgang z.B. für Zeile 31 als Makro auf, so erhält man den folgenden Code:
Rows("31:31").Select
Selection.Delete Shift:=xlUp
Dieser Code löscht aber immer die Zeile 31 und nicht die Zeile, die die aktive Zelle enthält. Der entsprechende Code dafür lautet:
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Wird dieser Code ausgeführt, so werden immer alle Zeilen gelöscht, über die sich die verbundene Zelle erstreckt.
Entsprechendes gilt für das Einfügen von Zeilen. Manuell wird nur eine Zeile eingefügt, per VBA analog dem oberen, zweiten Code werden immer so viele Zeilen eingefügt, wie die verbundene Zelle umfasst:
Rows("31:31").Select
Selection.Insert Shift:=xlDown
funktioniert, aber immer nur für die konkrete Zeile, hier Zeile 31.
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown
funktioniert nur wie gewünscht, wenn die Zeile mit der aktiven Zelle
keine vertikal verbundenen Zellen enthält.
Ich hoffe, ich habe mein Problem verständlich dargestellt und würde mich über hilfreiche Antworten sehr freuen. Dafür schon einmal herzlichen Dank!!!