Excel VBA質問箱 IV

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

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


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

【10583】書込み中、フォームが真っ白 がんばるぞ 04/2/3(火) 0:03 質問
【10586】Re:書込み中、フォームが真っ白 INA 04/2/3(火) 8:32 回答
【10593】Re:書込み中、フォームが真っ白 がんばるぞ 04/2/3(火) 10:31 質問
【10599】Re:書込み中、フォームが真っ白 INA 04/2/3(火) 11:24 回答
【10606】Re:書込み中、フォームが真っ白 がんばるぞ 04/2/3(火) 14:04 お礼

【10583】書込み中、フォームが真っ白
質問  がんばるぞ  - 04/2/3(火) 0:03 -

引用なし
パスワード
   ボタンをクリックすると特定のシートを別のExcelのブックに書き出す
VBAを書き、一応正しく動作しました。
しかし、FDに書き出したりすると、書込み中の数十秒間、
フォームが真っ白になってしまいます。
正しく書き込めた後は、元の状態に戻るのですが、
なんだかかっこ悪いです。

フォームを普通に表示させておくことはできないでしょうか?

【10586】Re:書込み中、フォームが真っ白
回答  INA  - 04/2/3(火) 8:32 -

引用なし
パスワード
   >フォームを普通に表示させておくことはできないでしょうか?
DoEventsやRepaintを試してみては如何でしょうか?

それ以前に、FDやファイルの破損の原因となるので、
VBAで直接FDを操作すること自体、お薦めできませんが・・

【10593】Re:書込み中、フォームが真っ白
質問  がんばるぞ  - 04/2/3(火) 10:31 -

引用なし
パスワード
   ▼INA さん:
>>フォームを普通に表示させておくことはできないでしょうか?
>DoEventsやRepaintを試してみては如何でしょうか?
>
>それ以前に、FDやファイルの破損の原因となるので、
>VBAで直接FDを操作すること自体、お薦めできませんが・・

ご回答ありがとうございます。
DoEvents等で試しましたが、あんまり状況は変わりませんでした。
おっしゃる通り、FDを直接操作することは避けようとも思いましたが、
もう少し挑戦しようと思い、書き込み中にフォームで「書き込み中」
メッセージを表示しようと思いました。

例えば、次のようなコードです。
UserFormTest.Show
ActiveWorkbook.Close savechanges:=True
Unload UserFormTest

そうすると、最初フォームが表示された時点でストップし、
そのフォームを閉じると書き込みが始まります。
フォームを表示したまま、書き込みを進めることはできないのでしょうか。

Windows付属のエクスポーラでファイルのコピーや移動をするとき、
フォルダからフォルダへファイルが飛んで行く絵が表れますね。
あんな風にできないものかと考えているのですが...

お知恵を拝借できれば幸いです。

【10599】Re:書込み中、フォームが真っ白
回答  INA  - 04/2/3(火) 11:24 -

引用なし
パスワード
   >例えば、次のようなコードです。
Sub test()
 UserFormTest.Show
End Sub

でユーザーフォームを呼び出したら
ユーザーフォームのもじゅーるで処理させればよいのです。

ユーザーフォームのイベントには色々ありますが、
Private Sub UserForm_Initialize()
  ActiveWorkbook.Close savechanges:=True
  Unload UserFormTest
End Sub

もしくは、

Private Sub UserForm_Activate()
  ActiveWorkbook.Close savechanges:=True
  Unload UserFormTest
End Sub

でよいかと思います。

なお、1回の命令で処理時間が長いときは、
その経過をマクロで表現することは出来ません。
その処理の長い命令が終わらない限り、つぎの命令が実行されないからです。

【10606】Re:書込み中、フォームが真っ白
お礼  がんばるぞ  - 04/2/3(火) 14:04 -

引用なし
パスワード
   ▼INA さん:
>>例えば、次のようなコードです。
>Sub test()
> UserFormTest.Show
>End Sub
>
>でユーザーフォームを呼び出したら
>ユーザーフォームのもじゅーるで処理させればよいのです。
>

考えてみれば、おっしゃる通りでした。
しかし、書き込み中は、フォームが真っ白になってしまいました。
もしかすると、ディスプレイカードが遅いかメモリが小さい
せいかもしれませんが、これはすぐには検証できません。

取り合えず、何とか間に合いそうなので、ありがとうございました。

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