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

Slowmotion bei 'Selection.Replace' für Links

Slowmotion bei 'Selection.Replace' für Links
28.02.2007 12:22:00
exonix
Moin zusammen,
verwende in einer zentralen Datei den VBA-Befehl 'Selection.Replace', um Formeln zu verändern, die sich aus anderen Dateien auf dem gleichen Serverlaufwerk Zahlen abziehen.
Konkret: Will ich Zahlen aus dem Januar sehen, dann ist innerhalb des Links ein Ordner '01' angesprochen, für den Februar wechsel ich entsprechend in das Unterverzeichnis '02'.
Und mit 'Selection.Replace' ersetze ich den Bestandteil der Excel-Formel, der das Unterverzeichnis anspricht. Das mache ich für 450 Zellen.
Das Ersetzen nimmt sehr viel Zeit in Anspruch (über 3 Minuten). Ein Ersetzen über das Menü 'Bearbeiten -- Ersetzen' dauer aber ebenso lange.
Frage: Gibt es (analog zum Befehl 'Application.Calculation = xlManual') einen Befehl, der Zeit einspart, indem die Aktualisierung der veränderten Zellen auf einen Schlag geschieht?
Verwendeter VBA-Code:
Selection.Replace What:=OldPath1, Replacement:=NewPath1, LookAt _
:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
Vielen Dank und Gruß,
exonix

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Slowmotion bei 'Selection.Replace' für Links
28.02.2007 12:58:06
Rudi
Hallo,
du musst erst die Formeln in ein Array einlesen, dann die Ersetzung im Array machen und dann das Array zurückschreiben.

Sub tt()
Dim i As Long, j As Long, vntFormeln
Dim OldPath As String, NewPath As String
OldPath = "c:\"
NewPath = "d:\"
vntFormeln = ActiveSheet.UsedRange
For i = 1 To UBound(vntFormeln, 1)
For j = 2 To UBound(vntFormeln, 2)
vntFormeln(i, j) = Replace(vntFormeln(i, j), OldPath, NewPath)
Next
Next
ActiveSheet.UsedRange = vntFormeln
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige