Zeilenzähler erhöhen, aber wie?

Hallo zusammen,

schreibe gerade an einem Makro, welches mir die Rechenkünste von MathCad zur Verfügung stellen soll. Das Makro sieht bisher wie folgt aus:

Sub UpdateWorksheet()
 Dim MathcadObject As Object
 Dim i As Long
 Dim outWert1, outWert2 As Variant
 Dim in\_yH2M, in\_nL, in\_nH2, in\_nH2O As Double
 Dim in\_dyH2M, in\_dnL, in\_dnH2, in\_dnH2O As Double

' Aufruf von MathCad aus Excel
 Set MathcadObject = ActiveSheet.OLEObjects(1).Object

 
'Werte lesen, die von Excel an MathCad übergeben werden
 in\_yH2M = ActiveSheet.Range("C5").Value
 in\_nL = ActiveSheet.Range("AQ5").Value
 in\_nH2 = ActiveSheet.Range("AR5").Value
 in\_nH2O = ActiveSheet.Range("AS5").Value

 in\_dnL = ActiveSheet.Range("BH8").Value
 in\_dnH2 = ActiveSheet.Range("BG8").Value
 in\_dnH2O = ActiveSheet.Range("BI8").Value
 in\_dyH2M = ActiveSheet.Range("BJ8").Value

'Werte an Mathcad übergeben, und den in MathCad definierten Variablen in1...inx zuweisen
 Call MathcadObject.SetComplex("in1", in\_nL, 0)
 Call MathcadObject.SetComplex("in2", in\_nH2, 0)
 Call MathcadObject.SetComplex("in3", in\_nH2O, 0)
 Call MathcadObject.SetComplex("in4", in\_yH2M, 0)
 Call MathcadObject.SetComplex("in5", in\_dnL, 0)
 Call MathcadObject.SetComplex("in6", in\_dnH2, 0)
 Call MathcadObject.SetComplex("in7", in\_dnH2O, 0)
 Call MathcadObject.SetComplex("in8", in\_dyH2M, 0)

'Ergebnisse von MathCad in dafür vorgesehene Felder schreiben und Felder formatieren
 Call MathcadObject.GetComplex("out1", outWert1, 0)
 Call MathcadObject.GetComplex("out2", outWert2, 0)
 ActiveSheet.Range("BB5").Value = outWert1
 ActiveSheet.Range("BC5").Value = outWert2
 ActiveSheet.Range("BB5:BC200").NumberFormat = "0.00"
End Sub

Dieses Makro berechnet mit aus mehreren Zellen einer Zeile zwei Werte, die dann in die beiden Zellen BB5 und BC5 der gleichen Zeile geschrieben werden. Soweit klappt es ja ganz gut. Nun möchte ich aber, dass die Berechnung nicht nur auf eine Zeile begrenzt wird, sondern auf alle Zeilen der Tabelle angewandt wird.

Ich bräuchte so etwas wie:

 For i = 5 To ActiveSheet.UsedRange.Rows.Count
 in\_yH2M = ActiveSheet.Range("Ci").Value

Ich möchte die Zelle ergo nicht mit „C5“ ansprechen, sondern mit „Ci“. Wer hat einen Tipp?

Gruß,

Pere

Hallo Pere,

wie wäre es mit:
For i = 5 To ActiveSheet.UsedRange.Rows.Count
in_yH2M = ActiveSheet.cells(3, i).Value

Gruß Silke

Hallo Silke,

vielen Dank für deine Antwort. Warum ich den Befehl

ActiveSheet.Range

benutzen, wo ich doch gezielt nur bestimmte Zellen ansprechen will, ist und bleibt mir ein Rätsel. :smile:

Gruß,

Pere

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]