28

同じモジュール内の別のサブからサブを呼び出したいと思います。最初のサブルーチンがメイン コードになり、そこで 2 番目のサブルーチンを呼び出します。2 番目のサブルーチンは、integer、double、double 配列、および double 行列として複数の入力を受け取ります。配列と行列のサイズは既知であり、整数変数に格納されます。サブルーチンもいくつかの出力を返します。だから、私はこのようなことをしたいと思います。

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

どのサブが実行を開始するメインサブであるかをどのように知るのですか。2 番目のサブを上に置き、コードを下のサブルーチンから開始することはできますか?

4

3 に答える 3

46

別のサブ内でサブを呼び出すには、次のことを行うだけです。

Call Subname()

だからあなたが持っているところにあなたが持ってCalculateA(Nc,kij, xi, a1, a)いる必要がありますcall CalculateA(Nc,kij, xi, a1, a)

どれが最初に実行されるかを決めるのはあなた次第です。サブルーチンを実行したいときは、マクロリストに移動して、実行したいものを選択して実行できます。また、それにキーショートカットを与えることもできます。それらのキーを押して実行する必要があります。とはいえ、二次サブでは普段はPrivate sub CalculateA(...)この方法でやっているのですが、マクロ一覧に出てこないので作業しやすいです

お役に立てば幸いです、ブルーノ

PS: 他に質問がある場合は、質問してください。ただし、これはコードを要求するコミュニティではありません。実行されていない質問またはコードを持ってここに来て、助けを求めてください。エクセルVBA形式で書いていただけると助かります。」

于 2013-05-26T22:25:20.317 に答える
4

これらは実際には2つの質問です。

最初のものはここで答えられます: Calling a Sub in VBA

2 番目のプロティップ: VBA にはメイン サブルーチンはありません。手続き型の汎用言語は忘れてください。VBA サブは「マクロ」です。Alt+F8 を押すか、ワークシートにボタンを追加して、自動生成された「ButtonX_Click」サブから必要なサブを呼び出して実行できます。

于 2013-08-14T15:27:34.430 に答える