Function Spv_Ideal(Subs, Press, T)
Dim M As Single
M = Switch(Subs = "Nitrogen", 28.01, Subs = "Water", 18.02, Subs = "Oxygen", 32, _
Subs = "Butane", 58.12, Subs = "Carbon dioxide", 44.01, Subs = "Carbon monoxide", 28.01, _
Subs = "Methane", 16.04, Subs = "Propane", 44.09, Subs = "Sulfur dioxide", 64.06, _
Subs = "Acetylen", 26.04, Subs = "Air", 28.97, Subs = "Ammonia", 17.04, _
Subs = "Argon", 39.94, Subs = "Benzene", 78.11, Subs = "Helium", 4, _
Subs = "Carbon", 12.01, Subs = "Hydrogen", 2.02, Subs = "Ethane", 30.07)
' MsgBox M'
Spv_Ideal = T * (8314 / M) / Press
End Function
Function Spv_Van(Subs, Press, T)
Dim a As Single, b As Single, p As Single, v As Single, M As Single
If Subs = "Nitrogen" Then
M = 28.01: a = 1.366: b = 0.0386
ElseIf Subs = "Water" Then
M = 18.02: a = 5.531: b = 0.0305
ElseIf Subs = "Oxygen" Then
M = 32: a = 1.368: b = 0.0367
ElseIf Subs = "Butane" Then
M = 58.12: a = 13.86: b = 0.1162
ElseIf Subs = "Carbon dioxide" Then
M = 44.01: a = 3.647: b = 0.0428
ElseIf Subs = "Carbon monoxide" Then
M = 28.01: a = 1.474: b = 0.0395
ElseIf Subs = "Methane" Then
M = 16.04: a = 2.293: b = 0.0428
ElseIf Subs = "Propane" Then
M = 44.09: a = 9.349: b = 0.0901
ElseIf Subs = "Sulfur dioxide" Then
M = 64.06: a = 6.883: b = 0.0569
End If
v = 0
Do
v = v + 0.000001
p = (8314 * T / ((v * M) - b)) - (a / ((v * M) ^ 2)) * 10 ^ 5
diff = Press - p
MsgBox diff
Loop While diff > 0 And p > 0
Spv_Van = v
End Function