Hallo...
Kann mir jemand diesen Befehl so deaktivieren, dass er zwar läuft, wenn ich die Zellen wechsle, aber nicht wenn Makros ablaufen
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Besten Dank
Lena
Public Sub Zeile_einfügen() ist zwar deaktiviert, wenn der Makro läuft, aber wenn ich eine _
Zeile einfügen will, wird die Formel (Spalte 10) nicht mit übernommen. Ich nehme an, dass der
Public Sub gar nicht mitläuft. Hab ich irgendwas falsch gemacht? Hast du noch eine andere Lö _
sung? Besten Dank!
Gruß
Lena
Public Sub Zeile_einfügen()
Application.EnableEvents = False
ActiveSheet.Unprotect
'Sparversion, Formeln werden ggf. bei Werteingabe in Spalte B eingefügt
'Listeneingabe bei Eingabe in neuer Zeile werden Formeln kopiert
Dim objZelle As Range, arrFormelSpalten
Dim lngSpalte As Long
Const lngZeile1 As Long = 9 '1. Zeile mit Formel
Const lngSpalteE As Long = 10 'Spalte bei deren Eingabe ggf. Formel kopiert wird
arrFormelSpalten = Array(10) 'Spalten mit Formeln
With Me
For Each objZelle In Target
'Prüfen ob geänderte Zeile(n) Formel enthält
If Not .Cells(objZelle.Row, arrFormelSpalten(0)).HasFormula _
And objZelle.Row >= lngZeile1 _
And objZelle.Column = lngSpalteE Then
Application.EnableEvents = False
'Formel in Spalten kopieren
For lngSpalte = LBound(arrFormelSpalten) To UBound(arrFormelSpalten)
Select Case objZelle.Row
Case lngZeile1
'Zeile direkt unter Spaltentitel eingefügt
.Range(.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)), _
.Cells(objZelle.Row, arrFormelSpalten(lngSpalte)).End(xlDown)).FillUp
Case Is
'## Die folgenden Prozeduren werden immer im aktiven Blatt ausgeführt ##
Sub LeerenachZeile2()
'Makro für Button, 1. Zeile mit Formeln in Zeile 2
Call LeerzeilemitFormelnEinfuegen(lngZeile1:=2)
End Sub
Sub LeereZeileanfuegen()
'Makro für Button, Formeln ab Zeile 2, Spalte 10 ist eine der Spalten mit Formel
Call LeerzeilemitFormelnAnfuegen(lngZeile1:=2, lngSpalteFormel:=10)
End Sub
Sub LeerzeilemitFormelnEinfuegen(lngZeile1 As Long)
'Fuegt an Position der aktiven Zelle eine Leerzeile ein und _
übernimmt Formeln aus Zeile darüber
Dim lngZeile As Long
Dim objZelle As Range
'lngZeile1 '1. Zeile mit Formel, vor dieser werden keine Zeilen eingefügt
Set objZelle = ActiveCell
lngZeile = objZelle.Row
If lngZeile > lngZeile1 Then
'Leerzeile einfügen
objZelle.EntireRow.Insert shift:=xlShiftDown
'Formeln aus Zeile oberhalb herunter kopieren
For Each objZelle In Range(Cells(lngZeile, 1), _
Cells(lngZeile, Cells.SpecialCells(xlCellTypeLastCell).Column))
If objZelle.Offset(-1, 0).HasFormula Then
Range(objZelle.Offset(-1, 0), objZelle).FillDown
End If
Next
Else
MsgBox "Zeilen werden nur unterhalb von Zeile " & lngZeile1 & " eingefügt!"
End If
Set objZelle = Nothing
End Sub
Sub LeerzeilemitFormelnAnfuegen(lngZeile1 As Long, lngSpalteFormel As Long)
'Fuegt am Ende der Liste Leerzeile ein und übernimmt Formeln aus Zeiledrüber
Dim lngZeile As Long, objZelle As Range
'lngZeile1 = 1. Zeile mit Formel, muss ausgefüllt sein
'lngSpalteDormel = eine der Spalten mit einer Formel
'Letzte ausgefüllte Zelle in Spalte mit Formel ermitteln
Set objZelle = Cells(ActiveSheet.Rows.Count, lngSpalteFormel).End(xlUp)
lngZeile = objZelle.Row
If lngZeile >= lngZeile1 Then
'Letzte Zeile in nächste Zeile kopieren
objZelle.EntireRow.Copy Destination:=Cells(lngZeile + 1, 1)
'Inhalte in Zellen ohne Formeln löschen
For Each objZelle In Range(Cells(lngZeile + 1, 1), _
Cells(lngZeile + 1, Cells.SpecialCells(xlCellTypeLastCell).Column))
If Not objZelle.HasFormula Then
objZelle.ClearContents
End If
Next
Cells(lngZeile + 1, 1).Select
Else
MsgBox "Spalte " & lngSpalteFormel & " ist in Zeile " & lngZeile1 _
& " noch nicht ausgefüllt!"
End If
Set objZelle = Nothing
End Sub
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen