Excel VBA質問箱 IV

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

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


50580 / 76738 ←次へ | 前へ→

【31043】Re:ユーザーフォームのインポート 訂正
発言  ichinose  - 05/11/9(水) 20:55 -

引用なし
パスワード
   ▼HOSHI さん:
こんばんは。

>
>マクロ「test」をコピペして実行してみました。
>一応これまでの流れを書いておきます。
>
>mainのみだった場合
> main実行
>  ↓
> 「ok」とでて、ユーザーフォームも更新されている。
>  ↓
> ユーザーフォームを開いて、×で閉じた後、mainをまた実行してみた
>  ↓
> 「読み込み中にエラーが発生しました」
>  ↓
> もう一度mainを実行してみた
>  ↓
> 「ok」
>結果的にはできるのですが、なぜ途中、一度フォームを開いて×で閉じると、エラーになるのかが、理論的にわからなかったので、お聞きした次第です。ちなみに一度mainで更新した後、フォームを一度も開かずにmainを再度実行してみたところ、エラーにはなりませんでした。
>
>testも試してみましたが、こちらの環境ではエラーになりました。「読み込み中にエラーが発生しました」とでて、ログには「行 2: フォーム名または MDI フォーム名 UserForm1 は既に使われています。」となっています。
>
>書くのが遅くなりましたが、(これも最低限提示するべき情報でした!すいません!)osはxp2のExle2002です。
現象確認しました。
私は、Win2000&Excel2002SP3で確認しました。
testが正常に作動したのは、ある条件下のみでした。失礼しました。

で、結局はこのような使い方は止めた方がよいです、ということなんですが、
それとは別にこれを動かす方法があるのか、模索してみました。

考え方としては、フォームを入れ替えるブックと入れ替えを行うコードを含むブックに
分けてみたらどうかと思いました。

例えば、
仮にフォームの入れ替えを行うブックをtextbk.xlsとします。
入れ替えるユーザーフォームは、Userform1
このブックの標準モジュールには、

'=================================================
Sub test()
  UserForm1.Show
  Application.OnTime Now(), "importbk.xls!main"
End Sub

次に入れ替えを実行するコードを含んだブックを
importbk.xlsとします。
このimportbk.xlsの標準モジュールに
'===============================================================
Sub main()
  Dim ret As Long
  ret = import_fmcomp(Workbooks("testbk.xls"), ThisWorkbook.Path & "\userform1.frm")
  If ret = 0 Then
   MsgBox "good"
  Else
   MsgBox Error(ret)
   End If
End Sub
'========================================
import_fmcomp、 get_formnm、及び、get_forminf_lineは、
同じ内容でこのブックの標準モジュールに記述します。

尚、testbk.xls、importbk.xls、インポートするUserform1.frmは、
同じフォルダ上にあるとします。

testbk.xls、importbk.xlsが共に開いた状態で

testbk.xlsのプロシジャーtestを実行してみてください。

私が確認した限り正常に作動しています。

3 hits

【30940】ユーザーフォームのインポート HOSHI 05/11/7(月) 16:22 質問
【30941】Re:ユーザーフォームのインポート Jaka 05/11/7(月) 16:44 発言
【30958】Re:ユーザーフォームのインポート ichinose 05/11/7(月) 23:16 発言
【30959】Re:ユーザーフォームのインポート 訂正 ichinose 05/11/8(火) 7:57 発言
【30988】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/8(火) 17:50 質問
【30991】Re:ユーザーフォームのインポート 訂正 ichinose 05/11/8(火) 20:27 発言
【31014】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/9(水) 10:22 お礼
【31024】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/9(水) 14:33 お礼
【31043】Re:ユーザーフォームのインポート 訂正 ichinose 05/11/9(水) 20:55 発言
【31058】Re:ユーザーフォームのインポート 訂正 HOSHI 05/11/10(木) 11:49 お礼

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