2017-11-10 49 views
0

VBAコードが大きすぎます。私は小さなSUBSを作成しようとしていますので、エラーは表示されませんが、エラー "Ambigoius name"がポップアップします。私は私のサブマシンの名前を変更しようとしました... Ex。EXCEL VBAプロシージャあいまいな名前

Private Sub worksheet_calculate() 
Range("I9").Interior.Color=Range("AK9").Display.Format.Interior.Color 
end sub 
Private Sub worksheet_calculate2() 
Range("J9").Interior.Color=Range("AQ9").Display.Format.Interior.Color 
end sub 

...例で示したように他のサブネームの名前を変更すると、何も行われず、元のものだけが正しく動作します。正しく動作するように名前を変更するにはどうすればよいですか?

+0

あなたの投稿に記載されている他のコードを投稿できますか?また、私はあなたがそれを言及する代わりに返されたエラーを貼り付けるべきだと思います。 –

+0

私は、基礎となるワークシートが計算されるときにこれらのサブプログラムを自動的に実行することを前提としています。しかし、1つ(最初のもの)だけが実行されます。そうですか?もしそうなら、あなたは 'Private worksheet_calculate()'と呼ばれる最初のサブ要素に 'Call worksheet_calculate2'のように書き込んで、次に2番目のサブ要素も実行する必要があります。 – Ralph

+2

"あいまいな名前"は、通常、同じ名前の2つのSUBがあることを意味します。 – Storax

答えて

0

だけworksheet_calculateが時にワークシートイベントによってトリガ、サブルーチンの定義済みの名前で、「worksheet_calculate」私の理解で

Call worksheet_calculate2 
Call worksheet_calculate3 
Call worksheet_calculate4 
Call worksheet_calculate4 
. 
. 
. 
Call worksheet_calculaten 
1

であるあなたのメイン、サブの終わりにコードの下の行を挿入再計算されます。

他のプライベートサブプライオリティを定義して呼び出すことができます。 like

Private Sub worksheet_calculate() 
    rem sub body 
    CalculateSub1 pars  'variant one 
    Call CalculateSub1(pars) 'variant two 
    rem sub body 
End Sub 

Sub CalculateSub1(pars) 
    Rem Sub body 
End Sub 
関連する問題