Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
884to888
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
884to888
884to888
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nach Worksheet_Change werden UDF nicht ausgewertet

nach Worksheet_Change werden UDF nicht ausgewertet
09.07.2007 23:01:00
Peter
... und Geschwindigkeitsproblem
Guten Abend
Mit Hilfe des Forums habe ich mein Worksheet_Change nun hingekriegt. Ich habe jedoch noch ein Folgeproblem und ein Geschwindigkeitsproblem
1. Folgeproblem
In meinem Workbook habe ich verschiedene Formeln, wo ich die Function KEINFEHLER2 (vgl. ganz unten) verwende. Diese Funktion gibt als Ergebnis das erste Argument aus, das nicht einen Fehler ergibt. Nun ist das Problem entstanden, dass nach Ablauf meines Ereignismakros diese Formeln alle den Fehlerwert #Wert ergeben, bis ich in die entsprechende Bearbeitungszeile klicke, womit das Ergebnis bei diesen Formeln auch wieder stimmt. Gibt es eine Möglichkeit, dass diese Function auch nach Ablauf meines Ereignismakros ohne Bemühen der Beareitungszeile funktioniert?
2. Geschwindigkeitsproblem
Das Ereignismakro benötigt etwa 30 Sekunden, bis es abgelaufen und die Sanduhr weg ist. Gibt es eine effizientere Methode, diese Formel im Bereich einzusetzen oder ist diese Bearbeitungszeit normal (die gleiche Formel wird gegen Tausend Mal eingetragen)?
Danke für eine Rückmeldung
Gruss, Peter

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich2 As Range
Set Bereich2 = Range("EndDat") '.Address
If Not Intersect(Target, Bereich2) Is Nothing Then
'=WENN(ODER(MONAT(G9)>MONAT(G8);JAHR(G8)>JAHR(G9));G9;"")  'entspricht der Formel in A9
Range("EndDat") = "=IF(OR(MONTH(R[-1]C[6])>MONTH(RC[6]),YEAR(R[-1]C[6])>YEAR(RC[6])),RC[6],"" _
"") "
End If
End Sub


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

Betreff
Datum
Anwender
Anzeige
Wo ist die UDF? ___oT
09.07.2007 23:11:00
{Boris}

AW: nach Worksheet_Change werden UDF nicht ausgewe
09.07.2007 23:24:42
fcs
Hallo Peter,
versuche dich mal in Schritten folgender Form zu nähern:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich2 As Range
Set Bereich2 = Range("EndDat") '.Address
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
If Not Intersect(Target, Bereich2) Is Nothing Then
'=WENN(ODER(MONAT(G9)>MONAT(G8);JAHR(G8)>JAHR(G9));G9;"")  'entspricht der Formel in A9
Range("EndDat").Formula = _
"=IF(OR(MONTH(R[-1]C[6])>MONTH(RC[6]),YEAR(R[-1]C[6])>YEAR(RC[6])),RC[6],"""") "
End If
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub


Dabei werden die Ereignis-Makros und das automatische Berechnen während der Ausführung blockiert.
Eine Ursache für die lange Laufzeit ist vermutlich, dass jedes Eintragen des Textes in die Zellen des Bereiches einen Neustart der WorksheetChange - Ereignisprozedur auslöst.
Die automatische Berechnung sollte während der Makroausführung ebenfalls deaktiviert werden. Insbesondere dann, wenn die Eingabe in Zellen per Makro jeweils umfangreiche Berechnungen auslöst.
Da du in die Zellen eine Formel und keinen normalen Text eintragen willst, muss du auch die entsprechende VBA-Syntax verwenden. Diese sollte auch das Problem mit der Function bereinigen, die es scheinbar nicht mag, wenn sie Text verarbeiten soll.
Gruß
Franz

Anzeige
AW: nach Worksheet_Change werden UDF nicht ausgewe
10.07.2007 07:38:00
Peter
Hallo Franz
Deine Lösung hat alle Probleme auf einen Schlag gelöst.
Grossartig! Vielen Dank, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige