Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
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

Makro zum Zeilen einfügen / löschen (speziell)

Makro zum Zeilen einfügen / löschen (speziell)
01.04.2016 08:47:32
Christian
Hallo,
ich habe eine Exceltabelle, die ich mit einem Passwort für den Benutzer sperren will. Jedoch will ich
über ein Makro das Einfügen und das Löschen von Zeilen ermöglichen.
Im Bereich A15:G15 - A45-G45 soll der Benutzer eine Zelle auswählen können und über den Button (Makro)
eine Zeile darüber (oder darunter, das ist mir egal) EINFÜGEN können. Soweit so leicht. Aber das
Problem stellt sich nun, da ich in den Zellen H15:L15 Formeln hinterlegt habe, die abhängig von Spalten
und Zeilen sind. Daher ist es wichtig, dass beim Einfügen einer Zeile IMMER die Formeln aus dem Bereich
H14:L14 bis zum Ende der Tabelle runterkopiert werden. (Damit der Zellenbezug immer für alle Formelnb
stimmt). Das bekomme ich leider nicht ganz hin.
Das gleiche gilt für das Löschen-Makro:
Im Bereich A15:G15 - A45-G45 soll der Benutzer eine Zelle auswählen können und über den Button (Makro)
eine Zeile darüber (oder darunter, das ist mir egal) LÖSCHEN können. Auch hier ist es wichtig, dass
beim LÖSCHEN einer Zeile IMMER die Formeln aus dem Bereich H14:L14 bis zum Ende der Tabelle
runterkopiert werden. (Damit der Zellenbezug immer für alle Formelnb stimmt). Das bekomme ich leider
nicht ganz hin.
Könnt ihr mir da helfen?
Verwendeter Code zum Einfügen:

Sub Zeilen_einfügen()
Application.ScreenUpdating = False
Selection.EntireRow.Insert
With Selection.EntireRow
.Offset(-1, 0).Resize(1).Copy
.PasteSpecial Paste:=xlPasteFormulas
End With
Application.ScreenUpdating = True
End Sub

Muster: https://www.herber.de/bbs/user/104700.xls

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

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Zeilen einfügen / löschen (speziell)
01.04.2016 10:33:24
ChrisL
Hi Christian
Spalten J:L der Beispieldatei enthalten keine Formeln und vermutlich darum lässt sich dein Problem auch nicht nachvollziehen.
cu
Chris

AW: Makro zum Zeilen einfügen / löschen (speziell)
01.04.2016 13:28:52
Christian
Hallo ChrisL
Danke für den Hinweis
https://www.herber.de/bbs/user/104709.xls
Sorry, die Formeln sind gelöscht beim Wandeln von xlsm in xls
In Zelle J18 steht folgende Formel:
=WENN(ODER(F18="";G18="");"";(
WENN(UND(I19="-";ODER(I17="-";I17=""));WENN(ANZAHL(I18)=0;"";ANZAHL(I18));
WENN(UND(I19="-";ODER(I16="-";I16=""));ANZAHL(I17:I18);
WENN(UND(I19="-";ODER(I15="-";I15=""));ANZAHL(I16:I18);
WENN(UND(I19="-";ODER(I14="-";I14=""));ANZAHL(I15:I18);
WENN(UND(I19="-";ODER(I13="-";I13=""));ANZAHL(I14:I18);"")))))))
Der Fett Markierte Formelbereich wird mit dem Makro nicht im Zellbezug geändert, sondern steht dann wie folgt:
=WENN(ODER(F19="";G19="");"";(
WENN(UND(I20="-";ODER(I17="-";I17=""));WENN(ANZAHL(I19)=0;"";ANZAHL(I19));
WENN(UND(I20="-";ODER(I16="-";I16=""));ANZAHL(I18:I19);
WENN(UND(I20="-";ODER(I15="-";I15=""));ANZAHL(I17:I19);
WENN(UND(I20="-";ODER(I14="-";I14=""));ANZAHL(I16:I19);
WENN(UND(I20="-";ODER(I13="-";I13=""));ANZAHL(I15:I19);"")))))))
Der Fett markierte Teil wird nicht verändert... alle anderen Bezüge schon.
Kopier ich dann aber die Formel aus Zeile 14 nach unten, dann geht es. Und genau dies brauche ich über das Makro realisiert.

Anzeige
AW: Makro zum Zeilen einfügen / löschen (speziell)
01.04.2016 13:41:37
Daniel
Hi
wenn in Tabellen Zeilen eingefügt oder gelöscht werden sollen, dann sollte man grundsätzlich versuchen,
nur Zellbezüge auf die eigene Zeile (dh die Zeile in der die Formel steht) oder auf die ganze Spalte zu verwenden.
wenn man trotzdem relative Zellbezüge auf Zellen in einer Zeile ober- oder unterhalb benötigt, muss man sich mit folgendem Workaround behelfen:
Für dein Beispiel:
die Formel steht in J18 und du hast einen Zellbezug auf Zeile 17 (I17)
wenn sich jetzt durch einfügen einer Zeile die Formel nach J19 verschiebt und der Zellbezug von I17 auf I18 mit wandern soll, musst du so vorgehen:
statt: I17 schreibst du: Index(I:I;Zeile()-1)
statt: I16 schreibst du: Index(I:I;Zeile()-2)
statt: I19 schreibst du: Index(I:I;Zeile()+1)
usw.
das ganze auch bei Bezügen auf mehrere Zellen:
statt ANZAHL(I14:I18) dann Anzahl(Index(I:I;Zeile()-4):I18)
einheitlich wäre natürlich Anzahl(Index(I:I;Zeile()-4):Index(I:I;Zeile()-0))
aber das ist unnötig, Zellbezüge auf die gleiche Zeile kannst du so belassen wie sie sind.
ggf ist es auch hilfreich, den ganzen Block als Tabelle zu formatieren (einfügen - Tabellen - Tabelle), dann werden Formeln beim Einfügen von Zeilen automatisch ergänzt, ohne dass du ein Makro brauchst.
Gruß Daniel

Anzeige
AW: Makro zum Zeilen einfügen / löschen (speziell)
04.04.2016 17:15:49
Christian
Hallo Daniel,
das ist eine super Idee. Mit Index hab ich noch nicht gearbeitet. Ich schau mir das mal an.
Danke für den Tipp!!!

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige