HERBERS Excel-Forum - das Archiv
Schleife programmieren und Zellen auslesen
Simon

Hallo zusammen
habe ein paar Fragen zum folgendem Sheet:
https://www.herber.de/bbs/user/66355.xls
Und zwar muss ich in Zelle C17 einen Startwert vorgeben (manuell eingeben und der nicht überschrieben werden soll), mit diesem dann in Zelle C23 ein Wert berechnet wird. Mit Zelle C23 wird Zelle C24 berrechnet und mit Zelle C24 wiederum ein neuer Wert in Zelle C22 der den Startwert aus C17 ersetzt. Mit C22 wird dann in einer neuen Schleife wieder C24 und C23 berrechnet und damit ein neuer Wert für Zelle C22 und so weiter.
Dies soll solang durchgeführt werden bis sich der Wert in Zelle C22 nicht mehr verändert, der Volumenstrom also seinen richtigen Wert erreicht hat.
Dann erst soll ein Durchsatzergebnis in Zelle C26 ausgegeben werden.
Ich hoffe Ihr könnt mir helfen, danke dafür schon mal
Gruß Simon

AW: Schleife programmieren und Zellen auslesen
fcs

Hallo Simon,
da du ja iterativ rechnen willst, muss der Wert aus C17 zwangsläufig immer am Ende jedes Durchlaufs durch den Wert in C22 ersetzt werden.
Du muss also den Startwert in C17 in einer Variablen zwischenspeichern.
Nach Abschluß der Iteration muss dann der gemerkte Wert wieder in C17 eingetragen werden.
Nach meinem Verständnis schaut das dann etwa wie folgt aus. Die max. Anzahl an Iterationen muss du halt ggf. noch ein wenig anpassen.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim dblDruckabfall As Double, dblDurchmesser As Double, dblLaenge As Double
Dim dblArrh As Double, dblTakt As Double, dblTnull As Double
Dim dblVisNull As Double, dblCarreauB As Double, dblCarreauC As Double
Dim dblVisExp As Double, dblDichte As Double, dblVolStromStart As Double
Dim dblVolStromNeu As Double, dblVisRep As Double, dblScherRep As Double
Dim dblDurchsatz As Double
Dim dblVolumenstromAlt As Double, lngCounter
'Variablen füllen
dblDruckabfall = Range("C3")
dblDurchmesser = Range("C4")
dblLaenge = Range("C5")
dblArrh = Range("C9")
dblTakt = Range("C10")
dblTnull = Range("C11")
dblVisNull = Range("C12")
dblCarreauB = Range("C13")
dblCarreauC = Range("C14")
dblVisExp = Range("C15")
dblDichte = Range("C16")
dblVolStromStart = Range("C17")
dblVolumenstromAlt = dblVolStromStart
lngCounter = 0
Do
'berechnungen durchführen
'beispiel
dblVolStromNeu = dblDruckabfall * dblLaenge
dblDurchsatz = dblVolStromNeu * dblDichte
'Ergebnis ausgeben
Range("C22") = dblVolStromNeu
Range("C26") = dblDurchsatz
If Abs(dblVolumenstromAlt - dblVolStromNeu) < 0.0001 * Abs(dblVolumenstromAlt) Then Exit Do
dblVolumenstromAlt = dblVolStromNeu
Range("C17") = dblVolStromNeu
Me.Calculate
lngCounter = lngCounter + 1
If lngCounter = 500 Then 'Notausstiegnach 500 Iterationen
MsgBox "Nach " & lngCounter & " Iterationen Genaugigkeit nicht erreicht"
Exit Do
End If
Loop
Range("C26") = dblDurchsatz
Range("C17") = dblVolStromStart
MsgBox "Iterationen: " & lngCounter
End Sub

AW: Schleife programmieren und Zellen auslesen
Simon

Hallo Franz
ich dank dir mal und werden es heute mittag testen und mich gegebenenfalls nochmals melden.
Gruß Simon