我想从同一模块内另一个子调用一个子。第一个子程序是我的主要代码,在那里我将调用第二个子程序。第二个子例程以整数,双精度,双精度数组和双精度矩阵形式接收多个输入。数组和矩阵的大小是已知的,并存储在整数变量中。该子程序还返回几个输出。所以,我想做这样的事情。
sub Main()
Nc As integer
Dim kij(1 To Nc, 1 To Nc), xi(1 to Nc), a1 As Double
'I assign values to my variables from the excelsheet e.g. Nc=Cells(1,1) etc.
CalculateA(Nc,kij, xi, a1, a)
Cells(5,5)=a
end sub
sub CalculateA(Nc as integer,kij as matrix double, xi as array double, a as Double)
a=0
For i=1 To Nc
For j=1 To Nc
a = a + kij(i,j)*x(i)*x(j)
Next j
Next i
a = a*a1
end sub
它如何知道哪个子程序是它开始运行的主要子程序。我可以将第二个子程序放在顶部,并且代码以某种方式从底部子程序开始吗?
最佳答案
要在另一个子内部调用一个子,您只需要执行以下操作:
Call Subname()
因此,在拥有
CalculateA(Nc,kij, xi, a1, a)
的地方,您需要拥有call CalculateA(Nc,kij, xi, a1, a)
作为运行第一个问题,这是您要确定的,当您要运行子程序时,可以转到宏列表,选择要运行的子程序并运行它,还可以给它一个快捷键,因此,您只会必须按这些键才能运行它。尽管在辅助子菜单上,我通常将其作为
Private sub CalculateA(...)
来执行,因为这样,它不会出现在宏列表中,并且更容易工作希望能帮助到你,
布鲁诺
PS:如果您还有其他问题,请问,但这不是您要求代码的社区,您来这里时遇到的问题或代码没有运行并寻求帮助,而不是像您那样做。如果可以用Excel VBA格式编写,那就太好了。”