web-dev-qa-db-ja.com

サブとApplication.Runの呼び出しの違い

私のビジネスでは、非常に単純なマクロに取り組むチームがいくつかあります。私はそれらすべてを互いに読みやすくしても同様の形式で、新しいジョイナーがデータの作業を開始することができます。

私は単純なマクロに言及しています。ほとんどがマクロレコーダーから派生しています

チームの半分使用:

_Sub button()

Call sub1()
Call sub2()
Call sub3()
Call sub4()

End Sub
_

そして他の半分の使用

_Sub button()

Application.Run("sub1")
Application.Run("sub2")    
Application.Run("sub3")    
Application.Run("sub4")

End Sub
_

私はあなたのサブに引数がない場合、Application.Runには使用がありますが、それにはかろうじての表記があるので、Application.Run("")を使用する理由はありますか。

それのすべての使用はスピードとプロセスで叩くことができますCall

3
Badja

私が使う Application.Run他のモジュールでプライベートなサブを実行しようとしている場合。マクロをユーザーから非表示にしたい場合は、マクロを実行することができないため、マクロからマクロを実行できない場合は、マクロを実行できません。

モジュール1で私は持っています

Private Sub priv()
  MsgBox “Private”
End Suv
 _

Module2では、下記にSub or Function not defined エラー。

Sub callPriv()
  Call priv()
End Sub
 _

しかしModule2ではこれはメッセージボックスを実行して表示します

Sub callPriv()
  Application.Run “priv”
End Sub
 _

シートまたはこのWorkbookモジュールのサブを呼び出している場合は、Application.Runを使用することも役立ちます。

2
Dude_Scott

Application.Runを通じてパラメータを渡すことができます。マクロをループしているときに使用します。上記の例ではこれを書く必要がなくても:

Sub button()
  Call sub1()
  Call sub2()
  Call sub3()
  Call sub4()
End Sub
 _

これを書くことができます:

for i = 1 to 4
  application.run("sub" & i)
next i
 _

潜水艦がSTRパラメータに取り込まれた場合は、これを行うことができます。

for i = 1 to 4
  application.run("sub" & i, strVariable)
next i
 _
5
Hasib_Ibradzic