【发布时间】:2017-09-09 15:39:57
【问题描述】:
我学习一点 VBA 已经有几年了,我肯定生疏了。
我试图在一个 Sub 中定义变量,然后从那个 Sub 调用各种函数,其中一些函数会调用其他函数等等。
目前代码如下:
'AREAS
Public Sub Areas()
Dim h, btf, bbf, tw, ttf, tbf As Double
h = 300
btf = 150
bbf = 150
tw = 7.1
tbf = 10.7
ttf = 10.7
Call TotalArea(h, btf, bbf, tw, ttf, tbf)
Call Sum_of_Areas(h, btf, bbf, tw, ttf, tbf)
End Sub
Function TotalArea(h, btf, bbf, tw, ttf, tbf As Double) As Double
TotalArea = btf * ttf + bbf * tbf + (h - ttf - tbf) * tw
End Function
Function Area_tf(btf, ttf As Double) As Double
Area_tf = btf * ttf
End Function
Function Area_bf(bbf, tbf As Double) As Double
Area_bf = bbf * tbf
End Function
Function Area_w(h, ttf, tbf, tw As Double) As Double
Area_w = (h - ttf - tbf) * tw
End Function
Function Sum_of_Areas(h, btf, bbf, tw, ttf, tbf As Double) As Double
Sum_of_Areas = Area_tf + Area_bf + Area_w
End Function
第一位运行良好,即 TotalArea 函数,但另一个(Sum_of_Areas)只是给了我错误。我试图找出合适的方法是什么,我需要声明哪些变量以及在哪里声明。以及我需要将哪些变量传递给函数。
谢谢!
【问题讨论】:
-
您必须将每个参数传递给非可选的函数(或子函数)。所以
Area_tf + Area_bf + Area_w中的Sum_of_Areas缺少他们的参数!请记住,Dim h, btf, bbf, tw, ttf, tbf As Doubleonly 声明tbfasDouble,其他类型为Variant。没有错误消息?