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