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

zelle für zelle abarbeiten

zelle für zelle abarbeiten
23.01.2006 10:08:21
Bernd
hallo,
ich habe da mal wieder ein problem.
und zwar:
mit folgendem code
If i &gt= 4 Then
[f1] = 7
[c4] = Jahr
For TEST = 1 To 62
Range("E8:AI9").Select
Selection.Replace What:=[c4] - 1, Replacement:=Jahr,
LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
x = x + 1
[g1] = x
Next TEST
Else
blablabla
End If
wollte ich erreichen, dass jedesmal, wenn die schleife durchlaufen wurde, in
der zelle G1 der wert x reingeschrieben wird.
denke mal das es nicht funzt weil der code E8:AI9 markiert und die änderungen
vornimmt.
wie kann mann denn dem code sagen, er soll erst E8 markieren, ändern, dann F8,
ändern, usw. bis AI9.
warum das ganze. der user soll sehen wieviele zellen schon abgearbeitet sind
und nicht nur darauf warten, bis die sanduhr weg ist.
vielen dank für eure hilfe
gruss bernd

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zelle für zelle abarbeiten
23.01.2006 10:29:47
Matthias
Hallo Bernd,

Dim rng As Range
For Each rng in Range("E8:AI9")
rng.Replace What:=[c4] - 1, Replacement:=Jahr,
LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Next rng

Gruß Matthias
...nee
23.01.2006 10:35:55
MichaV
siehe Sub UmlautHorror()
AW: ...nee
23.01.2006 10:39:43
Matthias
Hi Micha,
hast recht, da hab ich wohl zu schnell geschossen. Ich habe diese Bemerkung von Bernd mal einfach geglaubt, ohne nachzudenken:
denke mal das es nicht funzt weil der code E8:AI9 markiert und die änderungen
vornimmt.

Aber daran liegts wohl nicht.
Gruß Matthias
Anzeige
AW: zelle für zelle abarbeiten
23.01.2006 10:47:26
Bernd
hi matthias,
der code funzt so ganz gut.
wenn ich nun noch
x = x + 1
[g1] = x
darunter setze, soll er eigentlich nach jedem durchlauf in g1 den neuen wert schreiben.
tut er aber nicht.
erst nach beendigung der ganzen schleife schreibt er in g1 den wert x
kannste da nochmal helfen bitte.
danke
gruss bernd
AW: zelle für zelle abarbeiten
23.01.2006 10:54:13
Matthias
Hallo Bernd,
darunter setze, soll er eigentlich nach jedem durchlauf in g1 den neuen wert schreiben.
tut er aber nicht.

Das tut Excel vielleich schon, aber es kommt nicht dazu, es auch darzustellen.
Schreib mal

[g1] = x
DoEvents

Gruß Matthias
Anzeige
AW: zelle für zelle abarbeiten
23.01.2006 10:55:44
Matthias
Hallo Bernd,
ansonsten hat Micha natürlich recht.
Gruß Matthias
mein fehler
23.01.2006 11:01:27
Bernd
hallo ihr beiden,
ich hatte oben im code
Application.ScreenUpdating = false
hatte ich aber nicht mit gepostet.
daher wurde nichts angezeigt.
ich habe hier nur ein rechner im netz und der eigentliche code soll ca 500. mal die schleife durchlaufen.
da ist die sanduhr ziehmlich lange zu sehen und der user weiss nicht wie lange noch.
deswegen soll er sehen wieviele zellen von den zellen abgearbeitet worden sind.
danke euch beiden
gruss bernd
AW: mein fehler
23.01.2006 11:14:53
MichaV
Hallo,
na fein daß es klappt.
code soll ca 500. mal die schleife durchlaufen.
...eine einzige Codezeile reicht! Die Schleife ist unsinnig und macht den Code um das mindestens 40-fache langsamer! Und dafür, daß Du nun noch 500mal den Wert in der einen Zelle änderst, wird der Code noch langsamer!!! Habt Ihr zu viel Kaffee in der Firma?
Hier mal ein Beispiel mit 20000 Zellen. Dein Code: 40 Sekunden Sanduhr. Optimiert: 0 Sekunden.

Sub Test1()
Dim rng As Range
Dim t
t = Timer
For Each rng In Range("E1:E20000")
rng.Replace What:=[c4] - 1, Replacement:=[c4], LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Next rng
Debug.Print Timer - t '40 Sekunden
t = Timer
Range("E1:E20000").Replace What:=[c4] - 1, Replacement:=[c4], LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Debug.Print Timer - t '0 Sekunden !!!
End Sub

Aber ich finds okay, daß der Betrachter in Ruhe zugucken kann, wie die Zelle hochzählt.
Gruß- Micha
Anzeige
AW: zelle für zelle abarbeiten
23.01.2006 10:53:53
MichaV
Hallo Bernd,
Du schreibst warum das ganze. der user soll sehen wieviele zellen schon abgearbeitet sind
und nicht nur darauf warten, bis die sanduhr weg ist.

Dein Code ist nicht optimal (und Dein Rechner sicherlich auch nicht der Schnellste), daher die Sanduhr. Was Du möchtest, würde den Code noch mehr verlangsamen. Willst Du das wirklich? Oder soll es nicht lieber eine Lösung sein die so schnell funzt, daß die Sanduhr erst garnicht erscheint? Dann liest Dir mal den Beitrag durch der in dem Link versteckt ist, den ich gepostet habe.
Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige