声明大量变量,需要缩短任务

时间:2015-08-20 07:40:21

标签: excel vba excel-vba

我最近开始使用VBA并且没有先前的编程经验。我正在编写一个VBA脚本,它使用了很多变量,并且必须对每一个变量进行Dim并为每个变量分配一个值非常繁琐。

我确信有更好的方法可以解决这个问题。这是我的代码(我知道我应该逐个对每个变量进行Dim,但我现在就这样离开它):

Sub VLE()
Dim q1, q2, q3, q4, q5, R, tc1, tc2, tc3, tc4, tc5, pc1, pc2, pc3, pc4, pc5, w1, w2, w3, w4, w5, _
m1, m2, m3, m4, m5, tr1, tr2, tr3, tr4, tr5, t, p, a1, a2, a3, a4, a5, a1_1, a1_2, a1_3, a1_4, a1_5, a2_3, _
a2_4, a2_5, a3_4, a3_5, a4_5, A, y1, y2, y3, y4, y5, pr1, pr2, pr3, pr4, pr5, kij, _
b1, b2, b3, b4, b5, B, a2_1, a2_2, a3_1, a3_2, a3_3, a4_1, a4_2, a4_3, a4_4, a5_1, a5_2, a5_3, _
a5_4, a5_5 As Double

R = Cells(20, 3)
t = Cells(18, 3)
p = Cells(19, 3)
kij = 0
tc1 = Cells(3, 7)
tc2 = Cells(3, 8)
tc3 = Cells(3, 9)
tc4 = Cells(3, 10)
tc5 = Cells(3, 11)
pc1 = Cells(4, 7)
pc2 = Cells(4, 8)
pc3 = Cells(4, 9)
pc4 = Cells(4, 10)
pc5 = Cells(4, 11)
w1 = Cells(5, 7)
w2 = Cells(5, 8)
w3 = Cells(5, 9)
w4 = Cells(5, 10)
w5 = Cells(5, 10)
m1 = 0.37464 + 1.54226 * w1 - 0.26992 * w1 ^ 2
m2 = 0.37464 + 1.54226 * w2 - 0.26992 * w2 ^ 2
m3 = 0.37464 + 1.54226 * w3 - 0.26992 * w3 ^ 2
m4 = 0.37464 + 1.54226 * w4 - 0.26992 * w4 ^ 2
m5 = 0.37464 + 1.54226 * w5 - 0.26992 * w5 ^ 2
tr1 = t / tc1
tr2 = t / tc2
tr3 = t / tc3
tr4 = t / tc4
tr5 = t / tc5
pr1 = p / pc1
pr2 = p / pc2
pr3 = p / pc3
pr4 = p / pc4
pr5 = p / pc5
q1 = 0.45724 * (R * tc1) ^ 2 / pc1 * (1 + m1 * (1 - Sqr(tr1))) ^ 2
q2 = 0.45724 * (R * tc2) ^ 2 / pc2 * (1 + m2 * (1 - Sqr(tr2))) ^ 2
q3 = 0.45724 * (R * tc3) ^ 2 / pc3 * (1 + m3 * (1 - Sqr(tr3))) ^ 2
q4 = 0.45724 * (R * tc4) ^ 2 / pc4 * (1 + m4 * (1 - Sqr(tr4))) ^ 2
q5 = 0.45724 * (R * tc5) ^ 2 / pc1 * (1 + m5 * (1 - Sqr(tr5))) ^ 2
a1 = q1 * (p / (R ^ 2 * t ^ 2))
a2 = q2 * (p / (R ^ 2 * t ^ 2))
a3 = q3 * (p / (R ^ 2 * t ^ 2))
a4 = q4 * (p / (R ^ 2 * t ^ 2))
a5 = q5 * (p / (R ^ 2 * t ^ 2))
a1_1 = a1
a1_2 = Sqr(a1 * a2) * (1 - kij)
a1_3 = Sqr(a1 * a3) * (1 - kij)
a1_4 = Sqr(a1 * a4) * (1 - kij)
a1_5 = Sqr(a1 * a5) * (1 - kij)
a2_1 = a1_2
a2_2 = a2
a2_3 = Sqr(a2 * a3) * (1 - kij)
a2_4 = Sqr(a2 * a4) * (1 - kij)
a2_5 = Sqr(a2 * a5) * (1 - kij)
a3_1 = a1_3
a3_2 = a2_3
a3_3 = a3
a3_4 = Sqr(a3 * a4) * (1 - kij)
a3_5 = Sqr(a3 * a5) * (1 - kij)
a4_1 = a1_4
a4_2 = a2_4
a4_3 = a3_4
a4_4 = a4
a4_5 = Sqr(a4 * a5) * (1 - kij)
a5_1 = a1_5
a5_2 = a2_5
a5_3 = a3_5
a5_4 = a4_5
a5_5 = a5
y1 = Cells(11, 4)
y2 = Cells(12, 4)
y3 = Cells(13, 4)
y4 = Cells(14, 4)
y5 = Cells(15, 4)
b1 = 0.0778 * pr1 / tr1
b2 = 0.0778 * pr2 / tr2
b3 = 0.0778 * pr3 / tr3
b4 = 0.0778 * pr4 / tr4
b5 = 0.0778 * pr5 / tr5

End Sub        

我删除了剩下的代码,因为我只想知道声明变量。

我可以通过Excel单元格来完成任务,但是我需要在VBA中为此特定任务提供所有内容。

0 个答案:

没有答案