Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Beliebige Zellen die Formeln enthalten bei Änderung melden

Forumthread: Beliebige Zellen die Formeln enthalten bei Änderung melden

Beliebige Zellen die Formeln enthalten bei Änderung melden
06.11.2024 08:05:55
Börni
Hallo liebes Herbers Team und Freunde,

ich habe folgendes Ziel: Es sollen Zellen mit Formeln gegen versehentliches Löschen oder Ändern geschützt werden, ohne die Blattschutzfunktion zu verwenden.
Wunsch wäre, dass dies für alle geöffneten Excel gehen würde. D.h. es könnte z.B. in der Personal.xlsb ein VBA-Code laufen, der stets jede geöffnete Tabelle prüft, ob nach einer Änderung einer Zelle oder markierten Bereiches nun eine Formel überschrieben wurde. Wenn ja, dann Meldung mit vorherigem Zellinhalt und neuem Zellinhalt, mit der Möglichkeit, ggf. die Änderung rückgängig zu machen.
Wenn die allgemeine Variante nicht gehen, bzw. zu komplex werden würde, dann könnte ich den Code auch in die jeweiligen, entsprechend kritischen Tabellen einfügen.

Ich hoffe ich habe mich einigermassen verständlich ausgedrückt.

Hat da vielleicht jemand eine entsprechende Idee, wie das umgesetzt werden könnte?

Schon mal Besten Dank im Voraus und viele lieben Grüsse
Börni
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beliebige Zellen die Formeln enthalten bei Änderung melden
06.11.2024 09:57:53
ReginaR
Hi,
die Grundidee (bezogen auf eine Datei) könnte so aussehen:

Option Explicit


Dim str_formel As String

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If str_formel > "" Then
Application.EnableEvents = False
If MsgBox("Alte Formel: " & str_formel & "Neuer Wert: " & Target.Value & "Sollgeändert werden?", vbYesNo) = vbNo Then
Target.Formula2Local = str_formel
End If
Application.EnableEvents = True
End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.HasFormula Then
str_formel = Target.Formula2Local
Else
str_formel = ""
End If
End Sub


Der Code müsste allerdings in jede Datei in das Modul "Diese Arbeitsmappe" eingefügt werden. Eine "globale Lösung" fällt mir ao auf die Schnelle nicht ein.

VG Regina
Anzeige
AW: Beliebige Zellen die Formeln enthalten bei Änderung melden
06.11.2024 10:30:26
daniel
Hi
also Dateiübergreifend für alle geöffneten Dateien wird schwierig.
das würde dann ja auch nur bei dir funktionieren und nicht wenn andere diese Datei öffnen
man kann das progrqammieren für ein Tabellenblatt (Code im Modul des Tabellenblatts) oder für die ganze Mappe (alle Tabellenblätter, Code im Modul "DieseArbeitsmappe")

hier mal der Code fürs Modul "Diese Arbeitsmappe"

du bekommst eine Benachrichtigung, wenn du vorhandene Formeln löschst oder durch feste Werte ersetzt
das schreiben neuer Formeln oder das ändern von Formeln erzeugt keine Meldung.

Option Explicit


Public rng1 As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Set rng1 = Nothing
On Error Resume Next
Application.EnableEvents = False
Set rng1 = Intersect(Target, Target.SpecialCells(xlCellTypeFormulas))
Application.EnableEvents = True
On Error GoTo 0
End Sub



Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Anz1 As Long
Dim Anz2 As Long
Dim txt As String
If Not rng1 Is Nothing Then
Anz1 = rng1.Cells.Count
On Error Resume Next
Application.EnableEvents = False
Anz2 = Intersect(Target, Target.SpecialCells(xlCellTypeFormulas)).Cells.Count
Application.EnableEvents = True
On Error GoTo 0

If Anz1 > Anz2 Then
txt = "Formeln im Bereich " & vbLf & rng1.Address(0, 0) & vbLf & " wurden überschrieben oder gelöscht." & vbLf & "Rückgängig?"
Select Case MsgBox(txt, vbQuestion + vbYesNo)
Case vbYes
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Case Else
End Select
End If
End If
End Sub

Gruß Daniel
Anzeige
AW: Beliebige Zellen die Formeln enthalten bei Änderung meld
11.11.2024 07:00:55
Börni
Vielen Dank für die schnelle Hilfe.
Es funktioniert einwandfrei.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige