Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nur veränderte Formelwerte überprüfen

Nur veränderte Formelwerte überprüfen
05.01.2006 17:35:53
Gregor
Hallo Profis
Grundlage:
Spalte A enthält Formeln. Je nach eingabe in anderen Spalten, verändert sich der Formelwert in Spalte A in ein "x" oder "z" und umgekehrt.
Bisheriger Code:
Set bereich = Range("a2:a500")
Dim rngAct As Range, rngAll As Range, rngAll2 As Range
Dim strRng As String
For Each rngAct In bereich.Cells
If rngAct = "x" Or Then 'x einblenden
If rngAll Is Nothing Then 'EINGEBLENDETE MERKEN
Set rngAll = rngAct
Else
Set rngAll = Union(rngAll, rngAct)
End If
End If
If rngAct = "z" Then
If rngAll2 Is Nothing Then
Set rngAll2 = rngAct
Else
Set rngAll2 = Union(rngAll2, rngAct)
End If
End If
Next rngAct
rngAll.EntireRow.Hidden = False 'Zeile einblenden
rngAll2.EntireRow.Hidden = True 'Zeile ausblenden
Der obenstehende Code funktioniert so weit gut. Das Problem ist nur, dass er für ca. 500 Zeilen etwas lange durchläuft. Meine Frage. Gäbe es eine Optimierungsmöglichkeit?
Mir schwebt folgendes vor: nur die veränderten Formelwerte in Spalte A werden geprüft (nicht Zeile für Zeile, sondern nur die Werte einer Formel, die sich durch eine Eingabe verändert haben (ausgelöst durch: Worksheet_Change(ByVal Target As Range), also Zellen in Spalte A, die z.B. von "x" zu "z" geändert haben.
Vielen herzlichen Dank für deinen Input!
Grüsse
Gregor
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Nur veränderte Formelwerte überprüfen
05.01.2006 17:52:24
Andi
Hi,
probier mal dies im Worksheet_Change-Ereignis, Deine Prüfung musst Du noch einfügen:
Dim c As Range
Dim d As Range
For Each c In Target.Dependents
'hier Deine Prüfung, zB mit Range(c.Address)
Next c
Schönen Gruß,
Andi
AW: Nur veränderte Formelwerte überprüfen
05.01.2006 17:56:03
Josef
Hallo Gregor!
So sollte es schneller gehen!
Private Sub Worksheet_Calculate()
Dim rng As Range

On Error GoTo ErrExit

With Application
  .ScreenUpdating = False
  .EnableEvents = False
End With

For Each rng In Range("A2:A500")
  rng.EntireRow.Hidden = rng = "z"
Next

ErrExit:

With Application
  .ScreenUpdating = True
  .EnableEvents = True
End With


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: Nur veränderte Formelwerte überprüfen
05.01.2006 18:10:55
Gregor
Andi und Josef
Vielen herzlichen Dank für eure kompetenten Antworten.
Ihr habt mir sehr geholfen.
Ein schöen Abend noch!
Gruss
Gregor
Gern geschehen...
05.01.2006 18:31:26
Andi
Hi,
gern geschehen.
Die Zeile
dim d as range
war natürlich Quatsch, das kommt davon, wenn man Code-Schnipsel aus dem Zusammenhang reisst...
Schönen Gruß,
Andi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige