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

Schleifen

Schleifen
09.10.2003 15:23:36
golem
Hi,
allgemeine Frage: wann gebraucht man welche Schleife?
Meiner Meinung nach kann man aus einer schleife mit If Bedingungen etc "jede" andere Schleife erzeugen.

Stimmt es das manche Schleifen schneller als andere sind?

Ist for-next Schleife langsamer als eine do Loop Schleife?

Gruß Golem

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleifen
09.10.2003 15:41:37
Michael Scheffler
Hallo Golem,

Konstruiere mir bitte Folgendes:

Mit einer If-Schleife (1000) mal schreiben:
"Ich brauche Schleifen für repetierende Vorgänge!!!"
Gruß

Micha
AW: Schleifen
09.10.2003 15:51:47
golem
hi Micha,
ich weiß If ist eine ANWEISUNG.
Meinte in meiner Frage:
...aus einer schleife(z.B.For next) MIT zusätslichen If Bedingungen etc "jede" andere Schleife erzeugen.
So kann man in c++ aus einer Whileschleife eine For schleife machen, wenn man eine If Bedingung zufügt oder einfach vorher z.B.i=0 setzt, aber egal. Hab mich schlecht ausgedrückt.

Frage: werden manche Schleifen schneller abgearbeitet als andere Schleifenarten?
Annahme:beide produzieren das selbe Ergebnis in "gleicher" Weise.

Gruß Goli
Anzeige
AW: Schleifen
09.10.2003 16:10:04
Andi
is zwar vielleicht nicht hübsch, aber es geht doch (oder hab' ich dich falsch verstanden?):


Private Sub CommandButton1_Click()
Dim x As Integer
x = 0
schleifenanfang:
Debug.Print "Ich brauche Schleifen für repetierende Vorgänge!!!"
x = x + 1
If x < 1000 Then
GoTo schleifenanfang
Else
GoTo Schleife_zu_ende
End If
Schleife_zu_ende:
End Sub


Gruß
Andi
AW: Schleifen
09.10.2003 16:23:04
Michael Scheffler
Ja und dann gibt es noch die kleine Feinheit mir Abweis- und Nichtabweis-Schleifen.

Das ist die andere Geschichte (außer der Performance), die unterscheidet sich schon.

Es gibt da Untersuchungen drüber - finden sich im Netz. Musst mal schauen.

Nicht jede Scheife ist für jeden Zweck ideal.

"Do While" ist für das Einlesen von Dateien gut geeignet.

"For Next" für Schleifen, wo man vorher die Grenzen weiß.

"For Each" für Auflistungs/Collection-Schleifen.

Klar kannst Du z.B. auch mit einem "If" ein "Exit For" programmieren,
aber das "If" versaut einem die Performace ganz erheblich...

Man kann das auch immer anders machen, es ist ja kein Dogma.
Aber es ist eben meistens nicht nur "nicht" schön, sondern auch unzweckmäßig.

Gruß

Micha
Anzeige
hübsch o.T. darauf muss man mal kommen
10.10.2003 09:31:37
golem
AW: Schleifen
09.10.2003 16:12:24
xXx
Hallo,
hinsichtlich der Laufzeit unterscheiden sich die Schleifen nur marginal(siehe Test). Ein anderes Kriterium ist die Übersichtlichkeit. Anstatt eines Haufens verschachtelter If's und ElseIf's würde ich z.B. eine Select-Case Konstruktion vorziehen.


Sub SchleifenTest()
Dim i As Long, t As Double, n As Long
Application.ScreenUpdating = False
n = 10000
t = Timer
For i = 1 To n
Cells(i, 1) = "Testtext " & i
Next i
Cells(i, 1) = Timer - t
t = Timer
i = 1
Do While i <= n
Cells(i, 2) = "Testtext " & i
i = i + 1
Loop
Cells(i, 2) = Timer - t
t = Timer
i = 1
Schleife1:
Select Case i
Case Is <= n
Cells(i, 3) = "Testtext " & i
i = i + 1
GoTo Schleife1
End Select
Cells(i, 3) = Timer - t
i = 1
t = Timer
Schleife2:
If i <= n Then
Cells(i, 4) = "Testtext " & i
i = i + 1
GoTo Schleife2
Else
Cells(i, 4) = Timer - t
End If
Application.ScreenUpdating = True
End Sub

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen der Frager an die Antworter!
Anzeige
AW: Schleifen
09.10.2003 17:47:37
Karl-Otto Reimann
Hallo Udo
"Marginal" ist gut.
Falsche Referenzierung und Variablendeklaration kosten Minuten.
Glück Auf KO
AW: Schleifen
09.10.2003 19:36:51
Hans W. Hofmann
Wollt Ihr werklich Speed, dann lasst einen Makro4 ran:
Wie war dass noch mal.
Schleife
=FÜR("i";1;10000)
=FORMEL("Text "&i;"Z"&i"S")
=WEITER()
=RÜCKSPRUNG()

Testen und :-)
BTW: Kann sich rentieren da was auszulagern. Wie isses Golem, dass bringet
Deinen Salesman ans rennen...

Gruß HW
Hallo Hans!
10.10.2003 10:39:46
golem
Hi,
schaust Du mal wieder im Forum vorbei- TSP : habe info@lemitec.de geschrieben. Bis jetzt
keine Antwort.
Zur Zeit bin ich in VBA geblieben und habe nichts in DLL "ausgelagert". MS VB++ erstellt DLL Dateien mit Bibliotheken von denen ich noch nie gehört habe und in einer Art und Weise, dass ich nicht weiß wo ich meine Unterfunktion reinquetschen könnte.
Habe festgestellt, dass es nur eine Unterfunktion gab, die stark zeitraubend war.
Bei wenigen Restriktionen(5-10 von 100 möglichen) dauert es 30-120sec, naja immerhin keine Viertelstunde+ oder so...

Ist Dein geposteter Code eine Excelfkt oder noch in VBA umzuschreiben?

Schön mal wieder von Dir zu hören!
Anzeige
AW: Hallo Hans!
10.10.2003 13:22:12
Hans W. Hofmann
Ajee, das ist unsere Allgemein Adresse und ich bin zur Zeit nicht auf Arbeit (komme da nicht ran) bin auf Leergang. Du hast ja meine private Adresse - bitte keine Email veröffentlichen - Es wird z.Z. alles ausgelesen und gespamt was das Zeug hält.

VB kannst Du vergessen das bringt net viel: Wie sieht denn Dein Zeit intensiver Codeteil aus. Lass halt mal sehen?

Ich weiss etzat net ob Du noch XL4.0 gekannt hast. Aber das war noch nix mit VBA und dem dadurch verursachten Overhead. Ein Makro4.0 läuft in einem speziellen Makro-Tabellenblatt. Vielleicht weiß hier jemand, wo da noch Dokumentation zu finden ist. Kann DIr höchstens ein Beispiel schicken...

Gruß HW
Anzeige
AW: Hallo Hans!
10.10.2003 16:05:04
golem
Hallo,
ich werde und habe Deine Adresse natürlich nicht veröffentlicht, wieso sollte ich auch?

-Was ist Xl4.0, eine Programmiersprache?
-Beispiele erhalte ich gerne, bin sowas wie ein Sammler.
-Ist im TSP die DLL Datei mit XL4.0 programmiert(sofern XL eine Sprache ist)?
Der Code ist etwas abgewandelt von meiner Dienststelle, deshalb könnte ich Dir höchstens ein paar zeitraubende Schleifen zukommen lassen und nicht das gesamte Programm, wäre dann aber sicherlich schlecht zu verstehen.
Zuhause versuche ich z.Zt. ein Programm zur Depotverwaltung/Mitarbeiterverwaltung/Maschinenverwaltung zu bauen, dass im Grunde für diese 3(durchaus mehr) Bereiche universell einsetzbar ist/sein soll. Vielleicht werde ich eines Tages Microsoft/SAP etc vom Markt verdrängen ;-)

Projekt aufbauen und selbständig werden, bist Du dabei? :-)
Viele Grüsse
Golem

Anzeige
AW: Hallo Hans!
11.10.2003 20:33:38
Hans W. Hofmann
Ich spreche von unserer info Adresse und meine TSP-Dll ist C++!
Ich bin wieder an meinem Rechner, und kann auf meine Datenbank zugreifen.
Also alles was es in komprimierter Form zu den XL interna gibt findest Du im XL-SDK97. bei MS oder z.B. unter
http://www.jens-thiel.de/static/libXLL/
zu downloaden. Auch das Makro4-Handbuch ist dabei.
Vielleicht würde Dir ja ein C++Addin (XLA) mit einigen wenigen Tabellenfunktionen reichen. Leider setzt die Technik auf dem API for Microsoft Excel auf und das ist 97 stehen geblieben (viel C-Code und wenig C++), also entsprechend schwierig zu handeln.

Gruß HW
Anzeige
Super Bsp! Danke
10.10.2003 10:14:21
golem

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige