gaross

10-23-2012, 04:44 PM

I need help with an assignment I've been working on. I feel like I'm completely lost on this. It's driving me crazy. :banghead:

The assignment states:

"Create a VBA function procedure called R_K to evaluate the Redlich-Kwong equation of state given in problem 11 on page 327 (attached jpg). Note that there is confusion in the text between v (lowercase) and V (uppercase). All instances should be v, with units of L/mole. Do not use the values of T and v given in the problem statement; those should be a function arguments so the user can choose values. Remember that a function procedure must be stored in a standard module in order to be executed from the Excel worksheet."

The instructor is a little off his rocker and over half the class has dropped so far (9 weeks in). Any help would be greatly appreciated!!

This is my code plus I have a chart for the data in excel:

Option Explicit

Type CompoundData

compound As String

ctemp As Double

cpres As Double

End Type

Sub temp_press_data()

Dim RK(4) As CompoundData

RK(1).compound = "Methane"

RK(1).ctemp = 190.6

RK(1).cpres = 45.4

RK(2).compound = "Ethylene"

RK(2).ctemp = 282.4

RK(2).cpres = 49.7

RK(3).compound = "Nitrogen"

RK(3).ctemp = 126.2

RK(3).cpres = 33.5

RK(4).compound = "Water (vapor)"

RK(4).ctemp = 647.1

RK(4).cpres = 217.6

Call R_K

End Sub

Public Function R_K()

Dim R As Double, T As Double, P As Double, V As Double, a As Double, b As Double, x As Integer

Dim RK(4) As CompoundData

x = InputBox("Please select a compound from the chart")

T = InputBox("Please enter temperature (K)")

V = InputBox("Please enter volume (L)")

R = 0.08205

If x = 1 Then

a = 0.427 * (((R ^ (2)) * (RK(1).ctemp ^ (2.5)) / (RK(1).cpres)))

b = 0.0866 * R * ((RK(1).ctemp) / (RK(1).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

ElseIf x = 2 Then

a = 0.427 * (((R ^ (2)) * (RK(2).ctemp ^ (2.5)) / (RK(2).cpres)))

b = 0.0866 * R * ((RK(2).ctemp) / (RK(2).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

ElseIf x = 3 Then

a = 0.427 * (((R ^ (2)) * (RK(3).ctemp ^ (2.5)) / (RK(3).cpres)))

b = 0.0866 * R * ((RK(3).ctemp) / (RK(3).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

Else

a = 0.427 * (((R ^ (2)) * (RK(4).ctemp ^ (2.5)) / (RK(4).cpres)))

b = 0.0866 * R * ((RK(4).ctemp) / (RK(4).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

End If

End Function

The assignment states:

"Create a VBA function procedure called R_K to evaluate the Redlich-Kwong equation of state given in problem 11 on page 327 (attached jpg). Note that there is confusion in the text between v (lowercase) and V (uppercase). All instances should be v, with units of L/mole. Do not use the values of T and v given in the problem statement; those should be a function arguments so the user can choose values. Remember that a function procedure must be stored in a standard module in order to be executed from the Excel worksheet."

The instructor is a little off his rocker and over half the class has dropped so far (9 weeks in). Any help would be greatly appreciated!!

This is my code plus I have a chart for the data in excel:

Option Explicit

Type CompoundData

compound As String

ctemp As Double

cpres As Double

End Type

Sub temp_press_data()

Dim RK(4) As CompoundData

RK(1).compound = "Methane"

RK(1).ctemp = 190.6

RK(1).cpres = 45.4

RK(2).compound = "Ethylene"

RK(2).ctemp = 282.4

RK(2).cpres = 49.7

RK(3).compound = "Nitrogen"

RK(3).ctemp = 126.2

RK(3).cpres = 33.5

RK(4).compound = "Water (vapor)"

RK(4).ctemp = 647.1

RK(4).cpres = 217.6

Call R_K

End Sub

Public Function R_K()

Dim R As Double, T As Double, P As Double, V As Double, a As Double, b As Double, x As Integer

Dim RK(4) As CompoundData

x = InputBox("Please select a compound from the chart")

T = InputBox("Please enter temperature (K)")

V = InputBox("Please enter volume (L)")

R = 0.08205

If x = 1 Then

a = 0.427 * (((R ^ (2)) * (RK(1).ctemp ^ (2.5)) / (RK(1).cpres)))

b = 0.0866 * R * ((RK(1).ctemp) / (RK(1).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

ElseIf x = 2 Then

a = 0.427 * (((R ^ (2)) * (RK(2).ctemp ^ (2.5)) / (RK(2).cpres)))

b = 0.0866 * R * ((RK(2).ctemp) / (RK(2).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

ElseIf x = 3 Then

a = 0.427 * (((R ^ (2)) * (RK(3).ctemp ^ (2.5)) / (RK(3).cpres)))

b = 0.0866 * R * ((RK(3).ctemp) / (RK(3).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

Else

a = 0.427 * (((R ^ (2)) * (RK(4).ctemp ^ (2.5)) / (RK(4).cpres)))

b = 0.0866 * R * ((RK(4).ctemp) / (RK(4).cpres))

P = ((R * T) / (V - b)) - ((a) / (V * (V + b) * Sqr(T)))

End If

End Function