プロが教える店舗&オフィスのセキュリティ対策術

Windows10 Excel2016
入力シートにデータを入力し、
ボタンクリックでマクロ実行

・実行内容(ざっくり)
1.画面更新、再計算、イベント、アラーム無効
2.Workbooks(別ファイル)を開く
3.Workbooks(別ファイル).sheet1の表にデータを転記
4.Workbooks(別ファイル).sheet1の表を、実行ファイルのsheet2の表にコピペ
5.Workbooks(別ファイル)を保存して閉じる
6.印刷プロシージャ呼び出し
6-1.印刷シート1にデータを転記して印刷
6-2.印刷シート2にデータを転記して印刷
6-3.印刷シート3にデータを転記して印刷
7.入力シートに戻り、A1を選択
8.画面更新、再計算、イベント、アラーム有効
9.msgbox 完了しました

・不具合点
マクロ終了後の入力シートの1~3行目のセルに、印刷シート1のセルが写ってます。
写っているだけで、そのセルを選択すると数式バーには入力シートの値が出ています。
ボタンも映らなくなっていますが、マウスを合わせるとカーソルが変わり、クリック出来ます。
入力シートのChangeEventが発動すると、セルの表示は元に戻るが、ボタンは見えないままです。
※ChangeEventには、
1.画面更新など無効
2.入力データをクリア(白紙に戻す)
3.画面更新など有効

手動で他のシートへ移動して、入力シートに戻ると正しく表示されます。

画面停止でセルが崩れた?のかと思いますが、
どこを直せば直るのかが分かりません。

何かわかる方いましたら宜しくお願いします。

質問者からの補足コメント

  • お返事ありがとうございます。

    マクロの最初に、画面更新~無効(Application.ScreenUpdating=False)しているので、画面は入力シートまま動きません。

    ただしファイルを開く閉じるの際にちらつきはあります。
    マクロ終了時に、画面更新~有効にして終わらせてます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/02/04 21:50

A 回答 (2件)

こんばんは、


事象を再現する事が出来ないので、すべて想像の範疇で
参考になるか分かりませんが、、
VBAコード的には
ScreenUpdatingは正しくTRUEされているとして、
9.msgbox 完了しました の後に明示的にSheetObject、RangeObjectを
Activateするとどうでしょう?

また、ScreenUpdatingではなくApplication.Visible = Falseで実行は・・・
印刷プロシージャがあるとの事で、難しいですかね。

印刷での不具合でイメージが残っているのなら、
プリンタードライバーとの不具合も想像できます。

仮想プリンターで実行した場合、どのようになるか検証する事も考えられます。同様の事象が発生しない場合は、プリンタードライバーを最新のものにアップデートしてみてください。
さらに、オプションの詳細設定、ハードウエア グラフィック アクセラレータの設定が無効になっていないか確認してみてください。(他の不具合解消の為、無効になっている場合は、現状維持で)

私に起こった時には、取り敢えず、この辺を確認、検証してみます。
    • good
    • 0
この回答へのお礼

ありがとう

お返事ありがとうございます。

画面更新など有効にした後に、入力シートをActiveにしましたが、解決はしませんでした。

ですが、VisibleをApplicationではなく、各印刷シートにかけてみましたら上手く行きました。

Sub 印刷プロシージャ
各印刷シートに対して
Visible=True→印刷→Visible=False
ScreenUpdating=True
End sub

実行マクロに戻って
ScreenUpdating=True
入力シート.Active
Msgbox完了

助かりました。
ありがとうございました。

お礼日時:2021/02/05 19:04

実行中、画面はその作業状態が表示されてるのでしょうか?

この回答への補足あり
    • good
    • 0

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

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


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