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

Zweite Schleife.....

Zweite Schleife.....
17.11.2002 11:13:51
Erich
Hallo EXCEL-Freunde,

bin schon wieder mit meinem Schleifenproblem da. Björn hat mir den Tipp gegeben meine Schleife mit einer zweiten Schleife zu verlängern. Funktioniert auch wunderbar.

Nun habe ich festgestellt, dass ich noch eine Bedingung einbauen müßte:

Derzeit läuft die Schleife bis Zeile 121 durch. Links von diesen Zellen werden Werte errechnet. Wenn dieser Wert "eine Zelle links" nun "0,00" ist soll die Schleife nicht mehr den Wert aus "Sheet(1).Range("E39")" eintragen, sondern ab dieser Zelle immer "0,00".
Alle meine Versuche bei "Do While...." eine AND - Bedingung anzuhängen sind fehlgeschlagen.



Jetzt sehe ich nur noch mit Hilfe des Forums eine Möglichkeit zur Lösung.

Besten Dank!

mfg
Erich

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Zweite Schleife.....
17.11.2002 11:49:15
Björn
Hei Erich,


vielleicht in etwa so?:

Das geht allerdings bestimmt auch eleganter. Die erste If-Bedingung verhindert, daß der Referenzwert in E39 auch auf seine Eigenschaft als Null geprüft wird.

Gruß

Björn

Re: Zweite Schleife.....
17.11.2002 11:52:31
Nepumuk
Hallo Erich,
versuchs mal so:

Gruß
Nepumuk
o.T. Danke .. scheint zu funktionieren!!
17.11.2002 11:54:03
Erich
.
Re: Zweite Schleife.....
17.11.2002 12:01:23
Björn
Huhu Nepomuk,

Problem aber möglicherweise, wenn in E39 Text steht. Warum hast Du eigentlich den Parameter nullWert eigens definiert? Hat das eine Bedeutung?

Gruß

Björn

Re: o.T. Danke .. scheint zu funktionieren!!
17.11.2002 12:05:40
Nepumuk
Hallo Erich,
wollte schnell sein, geht besser:

Gruß
Nepumuk
Problem2
17.11.2002 12:23:35
Björn
Huhu Nepumuk,

wenn ich Erich richtig verstanden hatte, sollen die Formeln "links" auf den jeweiligen Ausgabewert des Makros reagieren. Danach würde es aber bei dem obenstehenden Makro zu einem Zirkelschluß kommen, weil das Ergebnis in der Zelle links Vorausetztung für die weitere Schleife ist. Um das zu Vermeiden müßte man immer den Zellwert in der vorausgehenden Zeile prüfen, denke ich. Oder sehe ich das falsch. Gäbe es eine Möglichkeit, zu prüfen, ob der Wert links neben dem auszugebenden Wert Null wäre, falls der Wert ausgegeben würde??? Dann würde es richtig schwierig, denke ich.

Gruß

Björn

Anzeige
Re: Problem2
17.11.2002 12:33:38
Nepumuk
Hallo Björn,
dann hab ich das falsch verstanden. Ich dachte die Werte links sind schon errechent. Aber wenn das so ist, dann einfach:

Gruß
Nepumuk
oder doch so...?
17.11.2002 12:37:52
Björn
oder so - ?:

Gruß

Björn

Re: oder doch so...?
17.11.2002 12:47:30
Nepumuk
Hallo Björn,
der Unterschied ist der, dass du noch einmal durch die Schleife läufst, einen Wert setzt, den vorhergehenden Wert abfrägst und dann den soeben gestzten wieder überschreibst.
Gruß
Nepumuk
Re: oder doch so...?
17.11.2002 13:06:58
Björn
Stimmt. Ich hätte allerdings auch zuerst die If-Abfrage gesetzt - siehe mein erstes Anwort-Posting an Erich. Also mit Deinem Ansatz hieße das dann wohl so:

Denn anderenfalls kriegt man tatsächlich einen Zirkelschluß, falls die Formeln links sich auf das Ergebnis des erst noch auszugebenden Wertes in der Spalte 6 beziehen.

Gruß

Björn


Anzeige
Re: oder doch so...?
17.11.2002 13:14:36
Nepumuk
NeeNee Björn,
ich setze den Wert in Spalte 6, frage das Ergebnis der Berechnung in Spalte 5 ab und wenn das null ist wird der Rest der Spalte 6 auf null gesetzt. Wo ist da ein Zirkelschluss? Es kommt doch keine Abfrage mehr.
Gruß
Nepumuk
Beispiel
17.11.2002 13:37:08
Björn
Huhu Nepumuk,

Beispiel:
setze E39 = 14
Formel in E40 bis E130: = F40-D40
Werte in F40 bis E130: 1,2,3,usw.
Mit Deiner Schleife krieg ich nie den Wert Null und solchermaßen wird die 14 bis zum bitteren Ende (Zeile 120) wiederholt. Wenn man dagegen meinen ersten Vorschlag nimmt, kriegt man in Zeile 54 richtigerweise erstmal eine Null. Allerdings ist mein Script auch falsch, denn dort werden für die folgenden Zeilen wieder 14 eingetragen. Richtig scheint mir daher die Synthese aus beidem zu sein:

Wie das mit der Next-Methode heißen müßte, krieg ich gerade nicht hin :-). Jedenfalls war mein versuch, Deine Formel zu modifizieren auch nicht tauglich.

Lieben Gruß

Björn

Anzeige
Re: Beispiel
17.11.2002 17:50:21
Nepumuk
Hallo Björn,
habe mal mit deinem Beispiel beide Programme laufen lassen. Das Ergebnis ist identisch.
Gruß
Nepumuk
Re: Ergänzende Frage
17.11.2002 18:22:52
Erich
Hallo an die beiden Schleifen-Freaks und an alle weiteren interessierten.

Bei der (vorläufigen) Fertigstellung hab ich bemerkt, dass ich die zweite "Bedingung" eigentlich frühzeitiger einsetzen kann (soll).

Derzeit besteht folgender Gesamtcode:

Ich hoffe es ist noch einigermaßen verständlich.

Vielen Dank nochmal.

Re: Ergänzende Frage
17.11.2002 18:40:37
Nepumuk
Hallo Erich,
so ganz klar ist es nicht. Wenn's nicht passt, dann melde dich noch mal.

Private Sub CommandButton2_Click()
Dim i As Integer
For i = 11 To 70
If Cells(i, 3) = 0 Then
Range(Cells(i, 6), Cells(70, 6)).Value = 0
Exit For
Else
If i Mod 3 = 1 Then
Cells(i, 6).Value = Sheets("Tabelle2").Range("F" & CStr(27 + ((i - 11) \ 12) * 2))
Else
Cells(i, 6).Value = Sheets("Tabelle2").Range("F" & CStr(28 + ((i - 11) \ 12) * 2))
End If
End If
Next i
For i = 71 To 140
If Cells(i, 3) = 0 Then
Range(Cells(i, 6), Cells(140, 6)).Value = 0
Exit For
Else
Cells(i, 6) = Sheets("Tabelle2").Range("F39").Value
End If
Next i
Range("A1").Select
End Sub

Gruß
Nepumuk

Anzeige
o.T. Danke - es läuft prima!!!
17.11.2002 19:06:44
Erich
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige