Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1192to1196
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

Wiederherstellung von Formeln

Wiederherstellung von Formeln
Formeln
Hallo ihr,
ich habe ein Tabellenblatt, wo viele Formel drin stehen.
Die späteren User dürfen diese Berechnungen aber auch überschreiben.
Wenn sie aber ihr Überschriebenes wieder rauslöschen, soll die alte Formel wieder in die Zelle.
Meine Idee:
Ich hab das Tabellenblatt kopiert und die Kopie unsichtbar gemacht.
Sowie eine Zelle auf dem Original verändert wird, soll ein VBA-Script anspringen und diese Zelle aus der Kopie in das Original kopieren.
Leider weiß ich nicht genau, wie man ein sub durch ein Event auslöst.
Um ehrlich zu sein auch nicht genau, wie der Inhalt der Methode aussehen müsste.
Eine Methode, die alle Formeln des ganzen Tabellenblatts kopiert sähe glaube ich so aus:
(Hab ich im Inet gefunden)
Option Explicit
Sub formeln()
Dim ws2 As Worksheet, Zelle As Object
Set ws2 = Worksheets("Abrechnung_save")
With Worksheets("Abrechnung")
For Each Zelle In ws2.UsedRange
If Zelle.HasFormula = True Then
.Range(Zelle.Address).FormulaLocal = Zelle.FormulaLocal
End If
Next Zelle
End With
End Sub
Könnte mir einer der Cracks vielleicht etwas auf die Sprünge helfen?
Mfg,
dobberph

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

Betreff
Benutzer
Anzeige
AW: Wiederherstellung von Formeln
09.01.2011 14:47:52
Formeln
Hallo,
versuch mal so, die Tabelle welche die kopie ist noch anpassen.
Der Code selbst kommt in die Tabelle die der User verwendet.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngRange As Range

On Error Resume Next
    'Kopie der Tabelle 
    Set rngRange = Tabelle2.Range(Target.Address).SpecialCells(xlCellTypeFormulas)
On Error GoTo 0

    If Not rngRange Is Nothing Then
        Application.EnableEvents = False
        Application.ScreenUpdating = False
            For Each rngRange In rngRange
                If Range(rngRange.Address) = "" Then
                    rngRange.Copy Range(rngRange.Address)
                End If
            Next rngRange
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End If

End Sub
Gruß Tino
Anzeige
AW: Wiederherstellung von Formeln
09.01.2011 15:07:54
Formeln
Hi ihr,
ich bin jetzt selbst soweit gekommen, dass er beim Event Change aufruft und dass er die Formel kopiert.
Leider bleibt der fettgedruckte Teil in einer Endlosschleife stecken.
Wenn ich die kursiv fettgedruckte Zeile auskommentiere, gehts (nur halt ohne die Funktion selbst)
Private Sub Worksheet_Change(ByVal Target As Range)
For Each Zelle In Target
If IsNull(Zelle) Or IsEmpty(Zelle) Or Zelle = "" Then
With Worksheets("Abrechnung_save")
If .Range(Zelle.Address).HasFormula = True Then
Range(Zelle.Address).FormulaLocal = .Range(Zelle.Address).FormulaLocal
MsgBox "Formel erneuert"
End If
End With
End If
Next Zelle
End Sub
Danke für eure Hilfe,
dobberph
Anzeige
AW: Wiederherstellung von Formeln
09.01.2011 15:11:08
Formeln
Ah, danke verstehe.
Ich nehme jetzt meinen Code mit diesem am Anfang:
Application.EnableEvents = False
Application.ScreenUpdating = False

und diesem Codeteil am Ende:
Application.EnableEvents = True
Application.ScreenUpdating = True
Vielen Dank für die Hilfe,
dobberph
AW: Wiederherstellung von Formeln
09.01.2011 15:14:55
Formeln
Hallo Dobberph,
in Modul1:

Sub Init()
Dim wks1 As Worksheet, wks2 As Worksheet, Zelle As Range
Set wks1 = Worksheets("Tabelle1")
Set wks2 = Worksheets("Tabelle2")
With wks2
.Visible = True
.UsedRange.ClearContents
For Each Zelle In wks1.UsedRange.SpecialCells(xlCellTypeFormulas)
Zelle.Copy Destination:=.Range(Zelle.Address)
Next Zelle
.Visible = xlSheetVeryHidden
End With
End Sub

in Modul "tabelle1"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range, wks2 As Worksheet
Set wks2 = Worksheets("Tabelle2")
Application.EnableEvents = False
For Each Zelle In Target
If Zelle.Value = "" Then
If wks2.Range(Target.Address).HasFormula Then
Zelle.Formula = wks2.Range(Target.Address).Formula
End If
End If
Next Zelle
Application.EnableEvents = True
End Sub

Gruß
Reinhard
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige