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

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

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

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

Q&A

解決済

2回答

2888閲覧

VBA 印刷前に値を更新したい

Akira_papa

総合スコア3

VBA

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

0グッド

0クリップ

投稿2020/09/02 10:41

前提・実現したいこと

エクセルVBAで、ボタンを押したら、班名を変えながら一括で印刷するマクロを組んでおります。
おおよそ出来たのですが、一部思ったようにいかないことがあります。
添付画像を見ていただきたいのですが、R6のセルに班名が記載してあります。
1班〜2班まであるのですが、その班名を選択すると、M10のセルの数字が変わります。
それを「図のリンク貼り付け」でG10あたりに貼り付けている状況です。
ここで、1班→300 、 2班→366 という数字が正しいとします。
印刷マクロを登録したボタンを、R6のセルが2班になっている状態で押すと、1班:366、2班:366という誤った状態で印刷されます。
最初に印刷する1班の数字が、更新されずに先に印刷されてしまいます。

やっかいなのは、時々うまくいくことがあるという点です。うまくいくときと、行かないときの違いはわかりません。

色々試している内に、コードも汚くなってしまっています。何かスマートな解決方法がありましたら、どなたかご教授していただけないでしょうか。

エクセル2016利用です

イメージ説明

該当のソースコード

Sub Print_out()

With Application
' .ScreenUpdating = False ここはコメントアウトしてみました
.EnableEvents = False
End With

With ActiveSheet
.Range("R6").Value = "1班"
End With

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

With ActiveSheet
.Range("R6").Value = "1班"
.Range("R6").Select
.PrintOut
.Range("R6").Value = "2班"
.PrintOut
End With

With Application
' .ScreenUpdating = True ここはコメントアウトしてみました
.EnableEvents = True
End With

End Sub

試したこと

リンク貼り付けの値が更新される前に印刷されているのかと思い、Waitを使って時間差を作ってみたのですが、それでもうまくいきません。
ScreenUpdatingやEnableEventsもいじったりしてみたのですが、だめでした。

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

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

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

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

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

kitasue

2020/09/03 01:11

「印刷マクロを登録したボタンを、R6のセルが2班になっている状態で押すと、1班:366、2班:366という誤った状態で印刷されます。」 とのことですが、逆に、R6のセルが1班、図の数字が300の状態で開始すると、どう印刷されますか?
Akira_papa

2020/09/03 01:31

ご覧頂きありがとうございます。 先に1班の状態で印刷すると、300という正しい数字で印刷されます。2班も366という数字に更新され印刷されます。 なので、現状は手動で1班に直してから印刷する方法で対応しているのですが、この手動の操作を挟まずに印刷する方法に悩んでおりました。
guest

回答2

0

手動計算になっていないでしょうか。
自動計算にしておいてはいかがでしょう。

VBA

1Application.Calculation = xlCalculationAutomatic ’自動計算 2'Application.Calculation = xlCalculationManual '手動はこちら

そのタイミングだけ再計算させたいなら

VBA

1Application.Calculate

投稿2020/09/03 00:19

radames1000

総合スコア1925

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

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

Akira_papa

2020/09/03 01:03

回答ありがとうございます! 計算は自動計算になっています。1班2班と印刷して行った時に、最初だけ計算されない感じです。 また、質問時に記載を漏らしましたが、Application.Calculateも試しました。が、やはりこちらを使っても、計算前に印刷されるのは変わりませんでした。
radames1000

2020/09/03 04:53

リンク貼り付けではなく、図形を置いておきそこで=$M$10にしてみてはいかがでしょうか。
Akira_papa

2020/09/03 05:25

度々ありがとうございます。 せっかく教えていただいたのに恐縮ですが、本日は試せない状況になってしまったので、明日またやってみます。申し訳ないです、ありがとうございます!
Akira_papa

2020/09/04 13:19

この度は教えていただいてありがとうございました。 原因はわからないままですが、解決することが出来ました。 お時間頂いたことに感謝します!
guest

0

ベストアンサー

私の手元でも再現しました。うまく行く場合と行かない場合がありますね。。。
回避方法として、[挿入]タブの[図形]から[角丸四角形]を選択して(形はお好みですがw)
シート上に描画し、その図形を右クリックして[マクロの登録]でプロシジャを登録し、
その図形をクリックして印刷したところ、今のところ全戦全勝ですw

投稿2020/09/03 02:26

編集2020/09/05 01:02
kitasue

総合スコア314

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

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

Akira_papa

2020/09/03 05:22

貴重なお時間に対応いただいてありがとうございます! ちょっと今日は試せない状況になってしまったので、明日ご指摘の方法で試してみます。 マクロをどこに登録するかで、結果が変わってしまうのはなぜなのでしょうか?バグみたいなものなんでしょうかね。謎ですw
kitasue

2020/09/03 05:34

分からないですね~w 図形をクリックしたら図形がrefreshされるんですかね~w
Akira_papa

2020/09/04 13:17

遅くなってしまいまして申し訳ないです。 ご指摘のように、図形を挿入して実行すると、たしかに全てうまくいっています。 原因がわからず、少しモヤモヤは残りますが、解決できましたのでベストアンサーとさせていただきます。 ご丁寧にお手元で再現までしていただいてありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問