Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : その他)
コマンドボタンの使い方につきまして
投稿日時: 20/01/18 12:58:15
投稿者: SA90118

お世話になります。
 
コマンドボタンの使い方につきまして、ご質問致します。
 
Excel 2019 Windows 10
----------------------------------------
BVBAProject (PERSONAL XLSB)
     +□Microsoft Excel Objects
     +□フォーム
     -□フォーム標準モジュール
    Module 1   ※1
    Module 2
 
-VBAProject (XXX - YYY.xls)
  - □Microsoft Excel Objects
         Sheet1 (Sheet 1)  ※2
         ThisWorkbook
  +□標準モジュール
-----------------------------------------
 
@フォーム標準モジュール →  Module 1
 
※1
 Sub テスト()
   CommandButton1_Click
 End Sub
 
 
AMicrosoft Excel Objects → Sheet1 (Sheet 1)
 
※2
Private Sub CommandButton1_Click()
    ・
    ・
   End Sub
 
 
テスト()内からCommandButton1_Clickを実行しますとコンパイル エラーになります。
         ↓
コンパイル エラー: Sub または Function が定義されていません。
 
質問
テスト()内からCommandButton1_Clickが呼び出し実行できれば良いのですが エラー
(Sub または Function が定義されていません)となりますのでPrivate Sub CommandButton1_Click()内と同じ全てをModule 1に記述追加しないと駄目なのでしょうか。
 
ご教示願えますと幸いです。宜しくお願い致します。
 
 

回答
投稿日時: 20/01/18 13:26:59
投稿者: simple

回答ではありませんが、確認です。
 
PERSONAL XLSB の標準モジュールから、
XXX - YYY.xlsのシートモジュールにあるプロシージャを呼ぶのですか?
 
PERSONAL XLSBは汎用性のあるタスクを実行するものですよね。
それが、特定のシートに依存するのですか?
同じものをPERSONAL XLSBに取り込むのではだめですか?
 
XXX - YYY.xlsに特定の操作を加えるなら、個人マクロに登録する意味が理解できません。

回答
投稿日時: 20/01/18 15:35:52
投稿者: WinArrow
投稿者のウェブサイトに移動

PERSONAL.XLSBの一般的な使い方
 
個別ブックのマクロからの共通処理(サブルーチン的なもの)として設計します。
 
今回のように
共通処理側から個別処理を呼び出すような使い方は、
ほとんど「PERSONAL.XLSB」として意味がありません。
 
それはそれとして
>   CommandButton1_Click

 RUN "XXX - YYY.xls!Sheet1.CommandButton1_Click"
 
に変更してみてください、
動作する保証はしませんが、
他ブックのプロシジャを呼び出す場合は、
RUN メソッドを使う
 
 

回答
投稿日時: 20/01/18 15:53:20
投稿者: mattuwan44

実際にそのような制御はした経験が無いですが、
 
> Sub テスト()
>   CommandButton1_Click
> End Sub

 
「コマンドボタンをクリックしてください。」と僕に命令されたとして、
「どのブックのどこにあるコマンドボタンを押せばいいんですか?」
とまず聞かないと動けません。
 
なにも言われなければ自ブック(PERSONAL XLSB)のユーザーフォームのコマンドボタンを
探すことになるかと思いますが、いかがお考えでしょうか?
誰かに(エクセル君も含む)何かを頼むときは、紛れのないように書いた方がいいかと思います。
 
それと、コンパイルエラーとの関係があるかは不明ですが^^;
ちょっと、個人用マクロブックを作って試してみようという気にならないので、雑感のみです。

投稿日時: 20/01/18 16:46:43
投稿者: SA90118

simpleさん
ご返答をして頂きまして、ありがとうございました。
 
mattuwan44さん
ご返答をして頂きまして、ありがとうございました。
 
WinArrowさん
ご返答をして頂きまして、ありがとうございました。
 
>RUN "XXX - YYY.xls!Sheet1.CommandButton1_Click"
>に変更してみてください、
はい、問題なく動作することができました。
AMicrosoft Excel Objects → Sheet1 (Sheet 1)には複数のCommandButtoがありましたので
VBAProject (XXX - YYY.xls) からBVBAProject (PERSONAL XLSB) へ同じく記載するのに
時間がかかりましたので連動できないものかと考えていました。
ご指導により一行で出来ました。今後も使わせもらいます。
 >RUN "XXX - YYY.xls!Sheet1.CommandButton1_Click"
 
 >他ブックのプロシジャを呼び出す場合は、 RUN メソッドを使う
はい、分かりました。
 
皆様より、ご回答をして頂きまして本当にありがとう御座いました。