Clever-Excel-Forum

Normale Version: Ergänzung im Makro – Zeilen einfügen bis zu bestimmter Zeilennummer unterbinden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Werte Excel-Freunde
 
Ich habe nachfolgendes Makro (zu Teilen mit Hilfe des Forums) erstellt, welches z.B. eine Aktion beim Einfügen einer Zeile ausführt.
 
Wie geschrieben wird es ausgeführt nach "If Target.Row > 54 Then…"
 
In den Zeilen 1 – 54 stehen aber wichtige Formeln, sodass beim Einfügen einer Zeile dort die ganze Berechnung zerstört würde.
 
Deshalb benötige ich vor „If Target.Row > 54 Then“ im Makro einen Zusatz, der das Einfügen einer Zeile von Zeile 1-54 unterbindet, vielleicht sogar mit einer MSG Box „Zeilen einfügen bis Zeile 55nicht möglich“. Das ist sehr wichtig, weil selbst das Löschen einer versehentlich bis Zeile 54 eingefügten Zeile die Berechnung zerstören würde.
 
Nachfolgend das schon vorgandene Makro.
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngRange As Range
    Dim lngTMP As Long
    If Not Intersect(Target, Range("AD44")) Is Nothing Then Filtern_in_Zonen
    If Not Intersect(Target, Range("AB40")) Is Nothing Then TabName
    If Target.Row > 54 Then
        If Target.Cells.Count = Me.Columns.Count Then
            If Target.Rows.Count = 1 Then
                On Error GoTo Fin
                Set rngRange = Target.Offset(1, 0)
                lngTMP = rngRange.Row
                With Application
                    .EnableEvents = False
                    .ScreenUpdating = False
                    .Undo
                    If rngRange.Row < lngTMP Then lngTMP = 1 Else lngTMP = 0
                    .Repeat
                End With
                If lngTMP = 1 Then
                    Cells(3, 27).Value = rngRange.Row - 1
                    Zeile_in_Zone_einfuegen
                End If
            End If
        End If
    End If
Fin:
    Set rngRange = Nothing
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
 
Für eventuelle Hilfestellungen bedanke ich mich schon im Voraus.
 
 
LG Guntram
Hallöchen,

eventuell nutzt Du dafür einfach den Blattschutz ... ? Oder Du prüfst bei SelectionChange, ob eine ganze Zeile gewählt wurde und Änderst die Selection z.B. auf die erste zelle der Zeile.
Hallo,

Danke für die Tipps. Aber der Blattschutz ist wegen anderer Makros nicht realisierbar.

Kann ich davon ausgehen, dass das Einfügen von Zeilen durch VBA nicht verhindert werden kann?
Hallo,

da eine Excelliste so aufgebaut sein sollte, dass jede Zeile (Datensatz) an jeder Stelle stehen kann, verstehe ich deinen Wunsch nicht. Zeige mal ein Beispiel.
... siehe mein Oder ...