質問
2018年10月6日土曜日 14:52
EXCEL2016を使っています。カメラ機能等を使った「リンク貼り付けした図」
の更新がうまくいかず困っております。
例えばA1セルを「図のリンク貼り付け(カメラ機能)」して同シート内に貼り
つけると、A1セルの状態(入力した値)が図に反映され、同じものが表示される
はずです。
ところが、以下のように、簡単なループによってA1セルの値を書き換えるとA1
セルの値は正しい値を示すものの、リンク貼り付けした図だけが、マクロ実行前
の値のままでMsgboxが開いてしまいます。
(実は1枚目のみ印刷ダイアログボックスを表示させるマクロを業務に使用して
おり、図だけが更新されないままに1枚目が印刷されたことで気づいたため、原
因を探るために簡略化した結果、Msgboxでも再現されることがわかりました。)
Sub 連続印刷()
Dim i As Integer
' Application.Wait Now ; TimeValue("00:00:01")
' をループ前に書けばなぜか正常に動作するが、
For i = 1 To 3
Sheet1.Range("A1") = i '番号入力欄を書き換え
' Application.Wait Now ; TimeValue("00:00:01")
' をループ内に書いても、なぜか改善しない。
MsgBox "表示内容を比べてください"
Next
End Sub
業務で使用するブックの不具合でしたので、なるべくきちんと修正したいので
すが、何より私の能力では、どのように手直ししたらよいのか見当がつかないた
め、より良い方法をご教示いただいたり、アドバイス等をいただけると幸いです。
なお、上記でコメントアウトした様に、番号入力欄(A1セル)の書き換え直後
にウェイトを入れても無意味でしたが、なぜかループの手前に入れた時には正し
く図が更新されました。このようなウェイトを入れる方法も偶然成功しただけで
すので、根本理解・解決に至っておりません。
当然、EXCELの数式は自動計算されるようにしております。どうか、よろしく
お願いいたします。
すべての返信 (2)
2018年10月10日水曜日 2:26 | 1 票
Application.WaitよりApplication.Calculateを入れたほうが確実かも?
2018年10月10日水曜日 4:46
Kw0121 様
ご返答をいただき、とても嬉しかったです。ありがとうございます。早速確かめてみましたが、どうもセルの更新は行われるようですが、リンクされた図の方はうまくいきませんでした。
ただ、今回のマクロはフォームコントロールのボタンをシート上に配置して実行していたのですが、何度か確かめるうちに、VBE上から直接実行したり、別の図形オブジェクトにマクロを登録してボタン代わりにしたときには更新されることが分かりました。そうなると、Excel自体の抱える問題であるような気がしてなりません。
とりあえず当面は別の図形をボタン代わりにする方向で検討していきますが、もっとスマートな方法をご存知の方がおられましたらアドバイスいただけると幸いです。