Excel VBA質問箱 IV

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

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


1059 / 13645 ツリー ←次へ | 前へ→

【76556】他のファイルのUserFormを呼び出したい 15/1/5(月) 15:51 質問[未読]
【76558】Re:他のファイルのUserFormを呼び出したい 独覚 15/1/5(月) 16:54 回答[未読]
【76559】Re:他のファイルのUserFormを呼び出したい 15/1/5(月) 19:35 質問[未読]
【76560】Re:他のファイルのUserFormを呼び出したい β 15/1/5(月) 20:59 発言[未読]
【76561】Re:他のファイルのUserFormを呼び出したい ichinose@タイプミスが増える 15/1/6(火) 7:07 発言[未読]
【76562】Re:他のファイルのUserFormを呼び出したい 独覚 15/1/6(火) 9:10 発言[未読]
【76563】Re:他のファイルのUserFormを呼び出したい 15/1/6(火) 9:39 お礼[未読]

【76556】他のファイルのUserFormを呼び出したい
質問    - 15/1/5(月) 15:51 -

引用なし
パスワード
   2つのファイル、AファイルとBファイルがあり、AファイルにUserFormを作成し、Aファイル、Bファイルを共に開いた状態でBファイルをActiveにした時にAファイルに作成したUserFormをBファイル上に表示させたいのですが可能でしょうか。

【76558】Re:他のファイルのUserFormを呼び出したい
回答  独覚  - 15/1/5(月) 16:54 -

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

まず、Aブックの標準モジュールにユーザーフォームを開くマクロを記述しておきます。
(例としてOpen_Form)

そうしたらBブックのWorkbook_Activateに
Private Sub Workbook_Activate()
  On Error Resume Next
  Application.Run "A.xlsm!Open_Form"
  On Error GoTo 0
  
End Sub
としてはどうでしょうか?

【76559】Re:他のファイルのUserFormを呼び出したい
質問    - 15/1/5(月) 19:35 -

引用なし
パスワード
   独覚さま
ご指摘のように記述しましたがUserFormが表示されません
訪問調査表ファイルに
Sub Open_Form()
訪問者リスト.Show’Userform
訪問者リスト.Top = Top - 1
End Sub
を記述し、datafile
Private Sub Workbook_Activate(ByVal Sh As Object)
On Error Resume Next
ApplicationRun "訪問調査表.xlsm!Open_Form"
On Error GoTo 0
End Sub
と記述しましたがUserFormは表示されませんでしたが間違いがあるのでしょうか

【76560】Re:他のファイルのUserFormを呼び出したい
発言  β  - 15/1/5(月) 20:59 -

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

横から失礼します。

>Private Sub Workbook_Activate(ByVal Sh As Object)
>On Error Resume Next
>ApplicationRun "訪問調査表.xlsm!Open_Form"
>On Error GoTo 0
>End Sub

これは、どのブックに記述しましたか?
訪問調査表.xlsm ではない、Bブックに記載するんですが?

それと

On Error Resume Next

On Error GoTo 0

を、いったん消してみませんか?

なにがしかのエラーがあれば、メッセージが出るので原因追及が楽になりますので。

【76561】Re:他のファイルのUserFormを呼び出したい
発言  ichinose@タイプミスが増える  - 15/1/6(火) 7:07 -

引用なし
パスワード
   ちょっと気になったので・・・。

>ご指摘のように記述しましたがUserFormが表示されません
これは、何回かの質疑応答で解決するのでしょうが・・・。


>を記述し、datafile
気になったのは、↑
datafile--データファイルと記述されていることです。
これが、最初からブックをVBAコードのブック(プログラムブック)とデータブックに
分けた仕様になっているとすると、データブックにVBAコードを記述する
という仕様でよいのか?  ということです。

ブックをVBAコードとデータを分けるという事を徹底するなら、
プログラムブック側にApplicationレベルのイベントを用意するという
仕様も考えられます。
シートをユーザーに触らせる仕様だとオブジェクト変数の値の保持の問題もあるので
工夫も必要な場合もありますけど・・・。


ちょっと気になりました。

【76562】Re:他のファイルのUserFormを呼び出したい
発言  独覚  - 15/1/6(火) 9:10 -

引用なし
パスワード
   ▼信 さん:
>訪問調査表ファイルに
>Sub Open_Form()
>訪問者リスト.Show’Userform
>訪問者リスト.Top = Top - 1
>End Sub
>を記述し、datafile
>Private Sub Workbook_Activate(ByVal Sh As Object)
>On Error Resume Next
>ApplicationRun "訪問調査表.xlsm!Open_Form"
>On Error GoTo 0
>End Sub

datafileのどこに記述しましたか?

Workbook_ActivateイベントはThisWorkbookモジュールに記述します。
(その際には「ByVal Sh As Object」は消してください)

【76563】Re:他のファイルのUserFormを呼び出したい
お礼    - 15/1/6(火) 9:39 -

引用なし
パスワード
   独覚様、β様、ichinose様
色々のアドバイス有難うございました。
上手くUserFormを表示することが出来ました。
AllpicationRunのスペルでRunの前に「.」を入れ忘れてしまいました。
初心者ですのでまた何かありましたらアドバイスをお願い致します。

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