Hallo Forum,
ich habe ein Makro geschrieben, um Kondensationsenthalpien per linearer Interpolation zu berechnen. Dafür habe ich zunächst Referenzwerte aus dem VDI-Wärmeatlas in entsprechenden Variablen, welche ich als Double deklariert habe, gespeichert.
Anschließend soll sich das Programm die jeweiligen Kondensationstemperaturen aus der Exceltabelle holen, sie in eine Variable schreiben und diese dann im Kopf der If Anweisung mit den Temperaturen der Referenzwerte vergleichen, um dann mit den korrekten Referenzwerten die Interpolation zu berechnen.
Das Ganze sieht bisher so aus:
Sub Berechnungen()
Dim druck_abd As Double 'Deklaration der Variablen als ganze- oder komma Zahl'
Dim druck_abd_abs As Double
Dim i As Integer
Dim Roh_wasser As Double
Dim cp_wasser As Double
Dim m_punkt_heiko As Double
Dim h_strich_15 As Double
Dim h_strich_20 As Double
Dim h_strich_25 As Double
Dim h_strich_30 As Double
Dim h_strich_35 As Double
Dim h_strich_40 As Double
Dim h_strich_45 As Double
Dim h_strich_50 As Double
Dim h_strich_55 As Double
Dim h_strich_60 As Double
Dim h_strich_65 As Double
Dim h_strich_70 As Double
Dim h_strich_75 As Double
Dim h_strich_80 As Double
Dim h_strich_85 As Double
Dim h_strich_90 As Double
Dim h_strich_x As Double
Dim h_zweistrich_15 As Double
Dim h_zweistrich_20 As Double
Dim h_zweistrich_25 As Double
Dim h_zweistrich_30 As Double
Dim h_zweistrich_35 As Double
Dim h_zweistrich_40 As Double
Dim h_zweistrich_45 As Double
Dim h_zweistrich_50 As Double
Dim h_zweistrich_55 As Double
Dim h_zweistrich_60 As Double
Dim h_zweistrich_65 As Double
Dim h_zweistrich_70 As Double
Dim h_zweistrich_75 As Double
Dim h_zweistrich_80 As Double
Dim h_zweistrich_85 As Double
Dim h_zweistrich_90 As Double
Dim h_zweistrich_x As Double
Dim delta_hv_x As Double
Dim cp_dampf_40 As Double
Dim cp_dampf_45 As Double
Dim cp_dampf_50 As Double
Dim cp_dampf_55 As Double
Dim cp_dampf_60 As Double
Dim cp_dampf_65 As Double
Dim cp_dampf_70 As Double
Dim cp_dampf_75 As Double
Dim cp_dampf_80 As Double
Dim cp_dampf_85 As Double
Dim cp_dampf_90 As Double
Dim cp_dampf_95 As Double
Dim cp_dampf_100 As Double
Dim cp_dampf_110 As Double
Dim cp_dampf_120 As Double
Dim cp_dampf_130 As Double
Dim cp_dampf_140 As Double
Dim cp_dampf_150 As Double
Dim cp_dampf_x As Double
Dim kondtemp As Double
Dim abdtemp As Double
Dim q_punkt_Heiko As Double
Roh_wasser = 1000 'Zuweisung der konstanten Werte'
cp_wasser = 4.2
h_strich_15 = 62.984 'Werte aus VDI-Wärmeatlas'
h_strich_20 = 83.92
h_strich_25 = 104.84
h_strich_30 = 125.75
h_strich_35 = 146.64
h_strich_40 = 167.54
h_strich_45 = 188.44
h_strich_50 = 209.34
h_strich_55 = 230.24
h_strich_60 = 251.15
h_strich_65 = 272.08
h_strich_70 = 293.02
h_strich_75 = 313.97
h_strich_80 = 334.95
h_strich_85 = 355.95
h_strich_90 = 376.97
h_zweistrich_15 = 2528.4
h_zweistrich_20 = 2537.5
h_zweistrich_25 = 2546.5
h_zweistrich_30 = 2555.6
h_zweistrich_35 = 2564.6
h_zweistrich_40 = 2573.5
h_zweistrich_45 = 2582.5
h_zweistrich_50 = 2591.3
h_zweistrich_55 = 2600.1
h_zweistrich_60 = 2608.8
h_zweistrich_65 = 2617.5
h_zweistrich_70 = 2626.1
h_zweistrich_75 = 2634.6
h_zweistrich_80 = 2643
h_zweistrich_85 = 2651.3
h_zweistrich_90 = 2659.5
cp_dampf_40 = 1.932
cp_dampf_45 = 1.94
cp_dampf_50 = 1.948
cp_dampf_55 = 1.957
cp_dampf_60 = 1.966
cp_dampf_65 = 1.976
cp_dampf_70 = 1.987
cp_dampf_75 = 1.999
cp_dampf_80 = 2.012
cp_dampf_85 = 2.026
cp_dampf_90 = 2.042
cp_dampf_95 = 2.059
cp_dampf_100 = 2.077
cp_dampf_110 = 2.121
cp_dampf_120 = 2.174
cp_dampf_130 = 2.237
cp_dampf_140 = 2.311
cp_dampf_150 = 2.396
Cells(12, 15) = "Druck Abd Abs [bar]" 'Überschriften der Zellen'
Cells(12, 16) = "Massenstrom Heiko [kg/s]"
Cells(12, 17) = "h' [kJ/kg]"
Cells(12, 18) = "h'' [kJ/kg]"
Cells(12, 19) = "hv [kJ/kg]"
Cells(12, 20) = "cp_dampf [kJ/kgK]"
Cells(12, 21) = "Q_punkt Heiko [MW]"
For i = 14 To 305
druck_abd = Cells(i, 5)
druck_abd_abs = 1.013 - Abs(druck_abd) 'Absolutdruck = Umgebungsdruck - Betrag des Unterdrucks'
Cells(i, 15) = Round(druck_abd_abs, 4)
m_punkt_heiko = Roh_wasser * (Cells(i, 8) / 3600)
Cells(i, 16) = Round(m_punkt_heiko, 4)
kondtemp = Cells(i, 13)
abdtemp = Cells(i, 6)
If kondtemp > 15 And kondtemp <= 20 Then 'Auswahl des Temp.-Bereichs und lin. Interp.'
' h_strich_x = h_strich_15 + ((h_strich_20 - h_strich_15) / 5) * (kondtemp - 15)
'
' h_zweistrich_x = h_zweistrich_15 + ((h_zweistrich_20 - h_zweistrich_15) / 5) * (kondtemp - 15)
'
' ElseIf kondtemp <= 25 Then
......
das Programm geht noch weiter, jedoch sind die folgenden Schritte ähnlich nur mit anderen Zahlenwerten.
Wenn ich nun das Makro laufen lassen möchte, zeigt er mir an Laufzeitfehler 13 Typen unverträglich.
Ich vermute, dass es damit zusammenhängt, dass kondtemp als Double deklariert ist, er in dem Kopf der If Anweisung dies aber mit einer Integer Zahl vergleichen soll?
Habe bereits versucht, die variablen kondtemp und abdtemp anders zu deklarieren aber das hat nichts gebracht und wäre eigl auch nicht im Sinn der Sache, daher hoffe ich, dass ihr mir hier evtl. weiter helfen könnt, ich hatte VBA ein wenig im Studium behandelt, würde mich allerdings eher als Anfänger einschätzen.
Vielen Dank im Vorraus und viele Grüße
Christofer
|