Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2589 / 13646 ツリー ←次へ | 前へ→

【67028】連続印刷について 01234 10/10/27(水) 17:25 質問[未読]
【67030】Re:連続印刷について momo 10/10/27(水) 18:05 発言[未読]
【67038】Re:連続印刷について 01234 10/10/28(木) 9:04 発言[未読]
【67043】Re:連続印刷について ichinose 10/10/28(木) 20:46 発言[未読]
【67044】Re:連続印刷について ichinose 10/10/28(木) 20:48 発言[未読]
【67055】Re:連続印刷について momo 10/10/29(金) 15:33 発言[未読]

【67028】連続印刷について
質問  01234  - 10/10/27(水) 17:25 -

引用なし
パスワード
   データ(sheet2)と出力シート(sheet1)を別個につくり、

Sub hyo()

  For m = 2 To 10
  
  Sheets("sheet1").TextBox1.Value = Sheets("sheet2").Cells(m, 3).Value
  Sheets("sheet1").TextBox2.Value = Sheets("sheet2").Cells(m, 2).Value
  Sheets("sheet1").TextBox3.Value = Sheets("sheet2").Cells(m, 5).Value
  Sheets("sheet1").TextBox4.Value = Sheets("sheet2").Cells(m, 6).Value
  ・・・
  これをtextbox30まで繰り返し。

  Sheets("sheet1").PrintOut


 Next m

End Sub

sheet2で作成したデータを、sheet1のテキストボックスに代入し→印刷
次のレコードも同じように代入→印刷・・・の流れで
mの件数分だけ連続印刷したいのですが、
印刷はされても次のレコードの内容に変わらないまま、
最初のレコードの内容が印刷されてしまいます。
申し訳ありませんが考えても原因がわからないため
教えてください。よろしくお願いします。

【67030】Re:連続印刷について
発言  momo  - 10/10/27(水) 18:05 -

引用なし
パスワード
   ▼01234 さん:
こんにちは
解決するかわかりませんが、PrintOutの前にDoEventsを入れてみると
どうでしょうか?

   DoEvents
>  Sheets("sheet1").PrintOut

【67038】Re:連続印刷について
発言  01234  - 10/10/28(木) 9:04 -

引用なし
パスワード
   ▼momo さん:
回答ありがとうございます。
実際入れてやってみたのですが、やはり最初のレコードデータしか
印刷されません。
マクロが終わったら、表示は最後のレコードのデータになるのですが。
最初から考え方自体違っているのでしょうか・・・
これが解決すれば終了なんですが、本当にわかりません。

【67043】Re:連続印刷について
発言  ichinose  - 10/10/28(木) 20:46 -

引用なし
パスワード
   こんばんは。

>データ(sheet2)と出力シート(sheet1)を別個につくり、
>
>Sub hyo()
  Application.ScreenUpdating = False
>  For m = 2 To 10
>  Sheets("sheet1").TextBox1.Value = Sheets("sheet2").Cells(m, 3).Value
   doevents
>  Sheets("sheet1").TextBox2.Value = Sheets("sheet2").Cells(m, 2).Value
   doevents
>  Sheets("sheet1").TextBox3.Value = Sheets("sheet2").Cells(m, 5).Value
   doevents
>  Sheets("sheet1").TextBox4.Value = Sheets("sheet2").Cells(m, 6).Value
   doevents
>  ・・・
>  これをtextbox30まで繰り返し。
   doevents  ’というようにDoeventsを一つの]テキストボックスに付き、一つ
         '挿入する
>  Sheets("sheet1").PrintOut
>
>
> Next m
  Application.ScreenUpdating = True
>End Sub

(前後のApplication.ScreenUpdating も必ずいれること)

では?

www.excel.studio-kazu.jp/kw/20081212225700.html

以前こんな問題に遭遇したことがありました。
それで上記のコードになったのですが、試してみてください

【67044】Re:連続印刷について
発言  ichinose  - 10/10/28(木) 20:48 -

引用なし
パスワード
   追伸

>   doevents  ’というようにDoeventsを一つのテキストボックスに付き、一つ
>         '挿入する
1:1で駄目なら、1:2(テキストボックス一つに対して、Doevents二つ)も
試してみてください

【67055】Re:連続印刷について
発言  momo  - 10/10/29(金) 15:33 -

引用なし
パスワード
   ▼ichinose さん:
質問者さんではありませんが・・・

こちらでもこんにちは

XL2003で再現検証してみました。(最初からやれ・・・と)

結果、各TextBoxごとのDoEventsでも、最後に2行DoEventsでも
正常動作しました。

不思議な現象ですね。
元々シートと相性が悪いActiveXコントロールと
元々処理が遅いPrint系の処理との不具合ですかね。

Valueに値を入れてから一定のタイミング後にPrintすると
正常に出てますのでタイムラグなんですかね。

2589 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free