Excel 2007ワークブックには、3つのExcelモジュールがあり、それぞれに1つのサブルーチンが含まれています。 Driverサブ(UpdateDataFromOracle)は、サブUpdateResponseとUpdateSchedを呼び出します。コードは正常に動作していますが、呼び出される各サブシステムの「戻りコード」を確認したいと思います。私は、ドライバサブがユーザに見えるようにしたいので、私はモジュール1と2のプライベートをプライベートにしました。 モジュール1プライベートサブUpdateResponse モジュール2プライベートサブはUpdateSched モジュール3公共サブUpdateDataFromOracleチェックプライベートサブの戻り値
はここでここで呼び出されたサブ
Option Explicit
Private Sub UpdateResponse()
'DECLARE VARIABLES
'...
If Sheets(strTempSheet).UsedRange.Rows.Count > 10 Then
UpdateResponse = 0
Else UpdateResponse = 90
End If
End Sub
からコードを呼び出すにはのドライバサブ
Sub UpdateDataFromOracle()
'DECLARE VARIABLES
Dim varSchedReturn as variant
'...
Call UpdateResponse
Call UpdateSched
'I Would like to insert the "return code" check here
End Sub
からのコードですプライベートサブシステム私は "コール"を放棄して "
Application.Run "Module1.UpdateResponse"
しかし、私はそのようなリターンコードを取得する方法を理解できません。 私はUpdateResponseとUpdateSched Private Functionsも作成しましたが、私はまだ戻りコードを取得する方法を理解できませんでした。問題は、私は公共の機能を残す場合は呼び出されたサブルーチンがユーザーに表示されていることである
Else UpdateResponse = 90
:私はUpdateResponseを作って、パブリック関数をUpdateSchedとき 、私のようなと呼ばれる潜水艦の最後に文を使用することができます。
私の目標は、ドライバサブのみをユーザに見せ、ドライバサブの呼び出されたサブシステムから何らかの「リターンコード」を評価できるようにすることです。 これを見ていただきありがとうございます。
ユーザーに見せたくない機能を持つモジュールで 'Option Explicit'の下に' Option Private Module'を使用してください:http://stackoverflow.com/q/296696/293078 –
注: Subと同じ名前の戻り値が必要な場合は、Subの代わりにFunctionを使用してください。 – user3598756
Hello Doug。 Option Explicitの下にあるOption Private Moduleがこのトリックを行いました。私は呼び出されたサブルーチンを関数に変えました。ドライバプログラムでは、varModule1Return = UpdateResponseと別のステートメントを使用していました。varModule2Return = UpdateSchedあなたが認識していると思いますが、等号の右側に関数名を配置すると、実行される。あなたのすべての協力に感謝します。 – user3138025