Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
832to836
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
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formeln werden über Makro seh langsam eingetragen

Formeln werden über Makro seh langsam eingetragen
04.01.2007 12:54:12
Josef
Hallo!
Mit dem Makro Markierung:_F wird die Spalte F markiert.
Mit dem Makro pastF wird in jede markierten Zelle eine Formel eingetragen. Nur die Eintragung erfolgt extrem langsam im Schneckentempo. Warum ist dies bitte so? Und was könnte ich tun, damit die Abarbeitung des Makros schnell erfolgt?
Danke
Josef

Sub Markierung_F()
Dim C As Range, ErgBereich As Range
Dim laR As Long
laR = Cells(Rows.Count, 1).End(xlUp).Row
For Each C In Range("F3:F" & laR)
If C.Offset(0, -1).Value <> "" Then
Set ErgBereich = C
Exit For
End If
Next C
If ErgBereich Is Nothing Then
Exit Sub
Else
For Each C In Range("F3:F" & laR)
If C.Offset(0, -1).Value <> "" Then
Set ErgBereich = Application.Union(ErgBereich, C)
End If
Next C
ErgBereich.Select
Set ErgBereich = Nothing
End If
'Call pastF
End Sub


Sub pastF()
On Error GoTo Weiter:
Dim rngCell As Range
For Each rngCell In Selection
rngCell.FormulaR1C1 = "=R[-1]C[4]"
Next
Weiter:
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln werden über Makro seh langsam eingetra
04.01.2007 13:00:19
Ramses
Hallo
Schalte vorher die automatische Berechnung aus

Sub Ausschalten()
With Application
.Calculation = xlManual
End With
End Sub

Und nachher wieder ein

Sub Einschalten()
With Application
.Calculation = xlAutomatic
End With
End Sub

Gruss Rainer
AW: Formeln werden über Makro seh langsam eingetra
04.01.2007 13:06:06
Josef
Hallo Rainer!
Besten Dank. Klappt bereits.
Josef
AW: Formeln werden über Makro seh langsam eingetragen
04.01.2007 13:28:16
Rudi
Hallo,
die Schleife gehört zum Typ "absolut überflüssig"

Sub pastF()
Selection.FormulaR1C1 = "=R[-1]C[4]"
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Formeln werden über Makro seh langsam eingetragen
04.01.2007 13:34:17
Daniel
Hallo
das ganze wird langsam, weil du Schleifen verwendest, die du gar nicht brauchst.
VBA ist, wenn mit Range-Objekten (also Zellen) gearbeitet wird sehr langsam. Schleifen sollten da möglichst vermieden werden.
außderm brauchst du die Zellen vor dem Eintragen der Formel nicht zu selektieren, wenn der Zellbereich bereits durch ein Range-Objekt definiert ist, auch das kostet Zeit.
da immer die gleiche Formel eingetragen wird, kannst du dir die Schleife in Sub pastF() sparen, in dem du einfach schreibst:
ErgBereich.formulaR1C1 = "=R[-1]C[4]"
somit kannst du dir auch gleich die ganze Sub sparen. des weiteren kannst du dir die Prüfungsschleifen sparen, wenn du die Prüfung in die Formel mit einbaust. Dann sind zwar mehr Zellen gefüllt, aber das ist auf jeden Fall schneller als eine Prüfung per VBA. Dein ganzer Code reduziert sich dann auf folgende Zeilen:
Dim laR As Long
laR = Cells(Rows.Count, 1).End(xlUp).Row
Range("F3:F" & laR).formulaR1C1 = "=if(RC[-1]="""","""",R[-1]C[4])"

du kannst das ganze sogar zum Einzeiler verkürzen, das ist dann aber etwas unübersichtlich
Range("F3:F" & Cells(Rows.Count, 1).End(xlUp).Row).formulaR1C1 = "=if(RC[-1]="""","""",R[-1]C[4])"
Gruß, Daniel
Anzeige
AW: Formeln werden über Makro seh langsam eingetragen
04.01.2007 14:50:31
Josef
Hallo Daniel!
Danke für Deine Antwort und Deine Hilfe.
Einen Fehler hätte ich aber noch:
Wenn ich zum Beispiel in der Zelle F253 die Formel
=WENN(E253="";"";J252) eingetragen habe, dann erhalte ich, wenn in der Zelle J252 kein Wert steht den Vermerk #WERT!. Stweht z, B. eine 0 in J252 dann wird aus dem #WERT! eine 0
Was müßte ich hier bitte noch machen, damit, wenn kein Wert in J252 ist keine #WERT! Meldung kommt sondern die Zelle leer bleibt.
Danke
Josef
AW: Formeln werden über Makro seh langsam eingetragen
04.01.2007 15:12:16
Daniel
Hallo
den Fehler kann ich leider nicht nachvollziehen.
ich bekomme bei dieser Formel wenn J252 leer ist, ebenfalls eine 0 angezeigt, aber keinen Fehler. Wp hier daß Problem liegt, kann ich leider nicht sagen.
Ist die Zelle J252 auch wirklich leer oder steht ggf. ne Formel drin?
wenn die 0 stört, über EXTRAS-OPTIONEN-ANZEIGE die 0-Werte ausblenden oder die Formel noch mit ner zusaätzlichen IF-Abfrage erweitern:
=WENN(E253="";"";wenn(J252="";"";J252))
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige