Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Ergänzung im Makro – Zeilen einfügen bis zu bestimmter Zeilennummer unterbinden
#1
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
Antworten Top
#2
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
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?
Antworten Top
#4
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.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#5
... siehe mein Oder ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste