Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


990 / 13644 ツリー ←次へ | 前へ→

【77046】エクセル マクロ ワークシート間の連動 ろん 15/5/10(日) 8:52 質問[未読]
【77047】Re:エクセル マクロ ワークシート間の連動 β 15/5/10(日) 9:37 発言[未読]
【77049】Re:エクセル マクロ ワークシート間の連動 ろん 15/5/10(日) 13:07 回答[未読]
【77050】Re:エクセル マクロ ワークシート間の連動 β 15/5/10(日) 13:49 発言[未読]
【77057】Re:エクセル マクロ ワークシート間の連動 ろん 15/5/10(日) 18:45 回答[未読]

【77046】エクセル マクロ ワークシート間の連動
質問  ろん  - 15/5/10(日) 8:52 -

引用なし
パスワード
   エクセルで複数のワークシートを開いた状態で、あるワークシートで起動したマクロ実行中に、他のワークシートに設定したマクロを実行することはできますか?
可能であれば、プログラムのやり方について教えてください。
(数日前にVBAに関する本を購入し、プログラムを勉強し始めた者です。)

【77047】Re:エクセル マクロ ワークシート間の...
発言  β  - 15/5/10(日) 9:37 -

引用なし
パスワード
   ▼ろん さん:

教えてください。

>エクセルで複数のワークシートを開いた状態で

複数のワークシートですか?
それとも、複数のマクロブックですか?

>あるワークシートで起動したマクロ実行中に、他のワークシートに設定したマクロを

ワークシートなのかマクロブックなのかにもよりますが、そもそも、マクロはどこに書かれていますか?
シートモジュールですか?標準モジュールですか?

いずれにしても、お望みのことはできますが、それが、ブックを言っておられるのかシートのことなのか。
そのマクロはどこに書かれているのかによって方法が異なりますので。

【77049】Re:エクセル マクロ ワークシート間の...
回答  ろん  - 15/5/10(日) 13:07 -

引用なし
パスワード
   ▼β さん:
返信ありがとうございます。
説明が不足しており申し訳ありません。

当方がやりたいことは以下です。

1)ワークブック1>ワークシート1 でボタンをクリック。フォームに記述したサブルーチン1.で、ワークブック2>ワークシート2を開く。
2)ワークブック2>ワークシート2を開くとともに、ワークシート2.のシートモジュールのサブルーチン2.を実行。
3)サブルーチン2.完了後、サブルーチン1.の処理を再開。

因みに、標準モジュール、シートモジュール、フォームの使い分けに関してもよく理解ができていないので、その点を含めてアドバイスをいただければ助かります。


>▼ろん さん:
>
>教えてください。
>
>>エクセルで複数のワークシートを開いた状態で
>
>複数のワークシートですか?
>それとも、複数のマクロブックですか?
>
>>あるワークシートで起動したマクロ実行中に、他のワークシートに設定したマクロを
>
>ワークシートなのかマクロブックなのかにもよりますが、そもそも、マクロはどこに書かれていますか?
>シートモジュールですか?標準モジュールですか?
>
>いずれにしても、お望みのことはできますが、それが、ブックを言っておられるのかシートのことなのか。
>そのマクロはどこに書かれているのかによって方法が異なりますので。

【77050】Re:エクセル マクロ ワークシート間の...
発言  β  - 15/5/10(日) 13:49 -

引用なし
パスワード
   ▼ろん さん:

モジュールには
標準モジュール、ThisWorkbookモジュール、Sheetモジュール、ユーザーフォームモジュール
そして特別な存在としてクラスモジュールがあります。
VBAをこれから勉強ということであれば、まず標準モジュールを基本にすればよろしいかと思います。
その他のモジュールは、オブジェクトモジュールと総称。特殊なイベント処理に使用するのが主目的。
今回、ユーザーフォームも使っておられるようですが、もし、別マクロブックを開くことのみがその目的であれば
これも標準モジュールで処理したほうが、わかりやすいと思います。
それぞれのモジュールをどう使い分けるか、それは、やりながら、おいおいにわかってくると思いますが
以下のページで、わかりやすく説明されていますので一読されたらよろしいですね。

ht p://officetanaka.net/excel/vba/beginner/10.htm
ht p://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_040.html
ht p://www.happy2-island.com/excelsmile/smile01/capter00400.shtml

で、サンプル的に。

1.ワークブック1に標準モジュールを準備。
2.その標準モジュールに以下のマクロを書きます。

Sub Test1()

  '★ワークブック2 を開くコードをここに記述
  
  'ワークブック2 の Test2 を実行
  Application.Run "ワークブック2.xlsm!Test2"
  
  '★後続の処理コードをここに記述

  '★必要なら、ここでワークブック2を閉じるコードを書きます
  
End Sub

3.ワークブック1のシート(どのシートでもいいですが、最初のシートにしましょう)に
  開発タブ->挿入 から、フォーム今tロールのボタンを配置します。
4.マクロ登録ダイアログが表示されますから、Test1 を選択します。
  これで、このボタンがクリックされたら、Test1が起動するようになります。
5.デザインモードになっていますので、デザインモードをクリックして解除します。

で、次に ワークブック2 側。

6.標準モジュールを準備します。
7.ここに、Test2 プロシジャを書きます。

Sub Test2()

  '★このプロシジャで実行すべきコードを記述。
  
  '以下はテスト用です
  MsgBox "Hello!"
  
End Sub

こうして、ワークブック1側のボタンをクリックしてください。
ワークブック2側のプロシジャ、Test2 が実行されます。

【77057】Re:エクセル マクロ ワークシート間の...
回答  ろん  - 15/5/10(日) 18:45 -

引用なし
パスワード
   ▼β さん:

大変ありがとうございます。
参考にさせていただきます。
助かりました。


>▼ろん さん:
>
>モジュールには
>標準モジュール、ThisWorkbookモジュール、Sheetモジュール、ユーザーフォームモジュール
>そして特別な存在としてクラスモジュールがあります。
>VBAをこれから勉強ということであれば、まず標準モジュールを基本にすればよろしいかと思います。
>その他のモジュールは、オブジェクトモジュールと総称。特殊なイベント処理に使用するのが主目的。
>今回、ユーザーフォームも使っておられるようですが、もし、別マクロブックを開くことのみがその目的であれば
>これも標準モジュールで処理したほうが、わかりやすいと思います。
>それぞれのモジュールをどう使い分けるか、それは、やりながら、おいおいにわかってくると思いますが
>以下のページで、わかりやすく説明されていますので一読されたらよろしいですね。
>
>ht p://officetanaka.net/excel/vba/beginner/10.htm
>ht p://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_040.html
>ht p://www.happy2-island.com/excelsmile/smile01/capter00400.shtml
>
>で、サンプル的に。
>
>1.ワークブック1に標準モジュールを準備。
>2.その標準モジュールに以下のマクロを書きます。
>
>Sub Test1()
>
>  '★ワークブック2 を開くコードをここに記述
>  
>  'ワークブック2 の Test2 を実行
>  Application.Run "ワークブック2.xlsm!Test2"
>  
>  '★後続の処理コードをここに記述
>
>  '★必要なら、ここでワークブック2を閉じるコードを書きます
>  
>End Sub
>
>3.ワークブック1のシート(どのシートでもいいですが、最初のシートにしましょう)に
>  開発タブ->挿入 から、フォーム今tロールのボタンを配置します。
>4.マクロ登録ダイアログが表示されますから、Test1 を選択します。
>  これで、このボタンがクリックされたら、Test1が起動するようになります。
>5.デザインモードになっていますので、デザインモードをクリックして解除します。
>
>で、次に ワークブック2 側。
>
>6.標準モジュールを準備します。
>7.ここに、Test2 プロシジャを書きます。
>
>Sub Test2()
>
>  '★このプロシジャで実行すべきコードを記述。
>  
>  '以下はテスト用です
>  MsgBox "Hello!"
>  
>End Sub
>
>こうして、ワークブック1側のボタンをクリックしてください。
>ワークブック2側のプロシジャ、Test2 が実行されます。

990 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free