Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Schleife programmieren und Zellen auslesen | Herbers Excel-Forum


Betrifft: Schleife programmieren und Zellen auslesen von: Simon
Geschrieben am: 06.12.2009 23:32:29

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

  

Betrifft: AW: Schleife programmieren und Zellen auslesen von: fcs
Geschrieben am: 07.12.2009 11:41:52

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



  

Betrifft: AW: Schleife programmieren und Zellen auslesen von: Simon
Geschrieben am: 07.12.2009 11:46:05

Hallo Franz

ich dank dir mal und werden es heute mittag testen und mich gegebenenfalls nochmals melden.

Gruß Simon


Beiträge aus den Excel-Beispielen zum Thema "Schleife programmieren und Zellen auslesen"