我想从同一模块内另一个子调用一个子。第一个子程序是我的主要代码,在那里我将调用第二个子程序。第二个子例程以整数,双精度,双精度数组和双精度矩阵形式接收多个输入。数组和矩阵的大小是已知的,并存储在整数变量中。该子程序还返回几个输出。所以,我想做这样的事情。

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格式编写,那就太好了。”

10-08 16:34