何歳が一番楽しかった?

いつもお世話になります。
エクセルのイメージコントロールを使用しているのですが、
なかなかうまく行かないので、アドバイスをお願いします。

シートにイメージコントロールをいくつか(8個)配置しました。
マクロで LoadPicture を使用し画像を読み込ませました。
Rangeで範囲を指定して印刷しました。
一旦、Sheet1.Image1.Picture = Nothing と開放しました。
そのイメージコントロールに別画像を LoadPicture させました。
同様に印刷させましたが、画像は最初に読み込ませたもののままです。
マクロが終了して見ると、最新の画像に更新されているのですが、
印刷したものでは(プリビューでも)更新されません。
Redraw させたり Refresh させるコマンドはないかと思いましたが見つかりません。
同じマクロで画像のコメントをセルに表示させているのですが、
こちにはどんどん更新しています。
画像だけが、最初に読み込んだ画像のままで印刷されてしまいます。
印刷範囲は常に同じです。

原因なり対処法なりをお教え下さいますようお願いします。

A 回答 (3件)

こんにちは。



原因はお分かりのようなので回避策を。。

再描画させてから印刷させる為にPrintOut (or PrintPreview)の前に次の2行を挿入


 For i = 1 To 1000: DoEvents: Next i

 Application.Wait Now() + TimeValue("00:00:03")


Forのカウンターの上限は適宜変更。
また、Application.Waitはなくても上手くいくとは思いますが念のため。。

DoEvents,Waitはご自分でお調べください。
以上です。
    • good
    • 2
この回答へのお礼

ありがとうございます。
一旦戻る方法か、待って様子を見る方法を考えてみていました。
DoEventsは思いつきませんでした。
おかげさまで解決できました。
また機会がございましたら、よろしくお願い致します。

お礼日時:2006/04/10 19:06

こんにちは。



No.2さんのコードで解決だと思いますが、
経験上、
DoEvents: DoEvents
の2回で大丈夫なような気もします。
(Application.Waitなし)

WorksheetにActiveXコントロールを貼り付けて似たような事をする場合は
一度OSに制御を渡さないといけないという事なのでしょうね。
DoEvents1コじゃなぜダメなのかは知りませんけど。^ ^;
    • good
    • 2
この回答へのお礼

ありがとうございます。
確かに2回で大丈夫でした。
試しに1回でもやってみましたが、本当ですね。
グリッドか何かで、2回Updateしないと更新してくれないものもあったような気がします。
ペアでないと寂しいのでしょうか。
助かりました。
またこんな機会がありましたら、よろしくお願い致します。

お礼日時:2006/04/10 19:09

直接関係があるかは解りませんが、参考までにサイトをご紹介します。



再描画の前にメッセージボックスの表示が必要かもしれません。

参考URL:http://support.microsoft.com/kb/242017/ja
    • good
    • 1
この回答へのお礼

早速の回答ありがとうございます。
バグの殿堂マイクロソフトさんのページを見てみました。
サブに行きっぱなしではなく、一旦戻るかしないとダメなんですね。
たしか、プログレスバーでも、そんな現象があったような気がします。
これからもよろしくお願い致します。

お礼日時:2006/04/10 19:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A