Excel VBA从另一个sub调用sub,具有多个输入,不同大小的输出

use*_*555 21 excel vba input subroutine

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

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
Run Code Online (Sandbox Code Playgroud)

它是如何知道哪个子元素是它开始运行的主要子元素.我可以将辅助子设置在顶部,代码以某种方式从底部子例程开始吗?

New*_*bie 38

要在另一个子区域内调用子区域,您只需要执行以下操作:

Call Subname()
Run Code Online (Sandbox Code Playgroud)

所以CalculateA(Nc,kij, xi, a1, a)你需要拥有它call CalculateA(Nc,kij, xi, a1, a)

由于运行第一个问题,你需要决定,当你想运行一个子时,你可以进入宏列表选择你要运行的那个并运行它,你也可以给它一个jey快捷方式,只需要按那些键,在次要子上我通常这样做Private sub CalculateA(...)因为这样它不会出现在宏列表中并且它更容易工作

希望它有所帮助,布鲁诺

PS:如果您有任何其他问题,请问,但这不是您要求代码的社区,您来到这里的问题或代码没有运行并寻求帮助,而不是像你做的那样"它会如果你能用Excel VBA格式写它,那就太棒了."