質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2567閲覧

画像の表示方法

sobue

総合スコア329

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/04/01 09:45

VBA

1#If VBA7 Then 2Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) 3#Else 4Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) 5#End If 6Sub test() 7 8Range("i1").Select 9ActiveSheet.Pictures.Insert("C:\Users\naoya\Pictures\1.jpg").Select 10 11Call アクティブシートの画像をすべて削除する 12End Sub 13 14Sub アクティブシートの画像をすべて削除する() 15Dim 画像 As Shape 16 17Sleep 3000 18For Each 画像 In ActiveSheet.Shapes 19 画像.Delete 20Next 21 22End Sub

sleepを入れると画像を表示するまえにスリープしてしまい、表示されません。
画像を表示したり消したりをしたいのですが、いい方法はありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

すみません。検討違いな回答をしてしまいました。
sobueさんの前回の質問を拝見したのですが、フラッシュ暗算を作成したいのですね。
であればApplication.ScreenUpdatingを活用すれば実現できると思います。(私の環境では成功しました)

VBA

1ActiveSheet.Pictures.Insert("C:\Users\naoya\Pictures\1.jpg").Select 2 3'画像挿入後に画面更新 4Application.ScreenUpdating = True

VBA

1 2'呼び出し元にも画面更新処理を入れる 3Sub Main() 4 5 Call test 6 Application.ScreenUpdating = True 7 8 Call test 9 Application.ScreenUpdating = True 10 11 Call test 12 Application.ScreenUpdating = True 13 14End Sub

投稿2017/04/02 09:32

N-u-u

総合スコア113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sobue

2017/04/02 09:50

sleepなどいれないときはできるのになぜ入れたらできなくなるのですか?
N-u-u

2017/04/02 10:47 編集

プログラムは実行前に"最適化"という処理が行われるのですが、 その時にVBAが「画像の表示は後回しにして、先に処理の停止(Sleep)を行おう」と"最適化"したのではないかと思われます。(本件を詳しく知りたい場合、別途teratailで質問することをおすすめします)
sobue

2017/04/02 12:06

Application.ScreenUpdating = Trueを入れたら画像は表示されるようになりましたが、削除されません。 これも、最適化が働いているということですか?
sobue

2017/04/02 12:21

すみません。勘違いです。できました。 ありがとうございます。
guest

0

ShapeオブジェクトのVisibleプロパティで表示/非表示を設定できます。
参考になりましたら幸いです。

投稿2017/04/01 10:48

編集2017/04/01 10:50
N-u-u

総合スコア113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sobue

2017/04/02 07:32

試してみましたが、挙動はDeleteの時と一緒でスリープやTimeValueで待機時間を設定すると画像挿入前に待機に入ってしまう。それを解消したいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問