Excel VBA質問箱 IV

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

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


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

【51015】ユーザーフォームの表示 acch 07/8/25(土) 16:06 質問[未読]
【51018】Re:ユーザーフォームの表示 Mimi 07/8/25(土) 18:07 発言[未読]
【51019】Re:ユーザーフォームの表示 acch 07/8/25(土) 19:06 質問[未読]
【51021】Re:ユーザーフォームの表示 SS 07/8/25(土) 20:12 発言[未読]
【51022】Re:ユーザーフォームの表示 ぱっせんじゃー 07/8/25(土) 20:18 発言[未読]
【51024】Re:ユーザーフォームの表示 Mimi 07/8/25(土) 22:57 発言[未読]
【51031】Re:ユーザーフォームの表示 acch 07/8/26(日) 7:59 質問[未読]
【51034】Re:ユーザーフォームの表示 ikeri 07/8/26(日) 11:03 回答[未読]
【51035】Re:ユーザーフォームの表示 acch 07/8/26(日) 14:21 質問[未読]
【51036】Re:ユーザーフォームの表示 bb 07/8/26(日) 14:50 発言[未読]
【51037】Re:ユーザーフォームの表示 neptune 07/8/26(日) 14:54 発言[未読]
【51055】Re:ユーザーフォームの表示 acch 07/8/27(月) 8:56 質問[未読]
【51057】Re:ユーザーフォームの表示 SS 07/8/27(月) 9:32 発言[未読]
【51058】Re:ユーザーフォームの表示 neptune 07/8/27(月) 9:32 発言[未読]

【51015】ユーザーフォームの表示
質問  acch  - 07/8/25(土) 16:06 -

引用なし
パスワード
   初心者です。
教えてください。

ワークシート上のデータを順次参照し、ユーザーフォームのテキストボックスで表示しながら印刷しようとしています。しかし、ユーザーフォームを表示するとかならず一時停止し、応答を待つ状態になります。印刷は進みながら、表示内容が更新されるようにするには、どうしたらよいのでしようか。ユーザーフォームでは不可能なのでしようか。

【51018】Re:ユーザーフォームの表示
発言  Mimi  - 07/8/25(土) 18:07 -

引用なし
パスワード
   ▼acch さん:
>ユーザーフォームを表示するとかならず一時停止し、応答を待つ状態になります。

Jobが一旦完了するからでは無いでしょうか?

現在の貴方のコードをアップされると、もっと分かり易いと思いますが・・・

【51019】Re:ユーザーフォームの表示
質問  acch  - 07/8/25(土) 19:06 -

引用なし
パスワード
   ▼Mimi さん:
>▼acch さん:
>>ユーザーフォームを表示するとかならず一時停止し、応答を待つ状態になります。
>
>Jobが一旦完了するからでは無いでしょうか?
>
>現在の貴方のコードをアップされると、もっと分かり易いと思いますが・・・
 With UserForm4
  .から.Text = w_kara
  .まで.Text = w_made
  .コード.Text = view_id
  .氏名.Text = view_simei
  .年.Text = w_nen
  .月.Text = w_tuki
  .印刷状況.Text = "印刷中!!"
 End With
 UserForm4.Show
こんな感じですが、いかがでしょうか。

【51021】Re:ユーザーフォームの表示
発言  SS  - 07/8/25(土) 20:12 -

引用なし
パスワード
   ▼acch さん:
関係あるかわかりませんが
> UserForm4.Show
 UserForm4.Show vbModeless
としてみたらどうでしょう。

>▼Mimi さん:
>>▼acch さん:
>>>ユーザーフォームを表示するとかならず一時停止し、応答を待つ状態になります。
>>
>>Jobが一旦完了するからでは無いでしょうか?
>>
>>現在の貴方のコードをアップされると、もっと分かり易いと思いますが・・・
> With UserForm4
>  .から.Text = w_kara
>  .まで.Text = w_made
>  .コード.Text = view_id
>  .氏名.Text = view_simei
>  .年.Text = w_nen
>  .月.Text = w_tuki
>  .印刷状況.Text = "印刷中!!"
> End With
> UserForm4.Show
>こんな感じですが、いかがでしょうか。

【51022】Re:ユーザーフォームの表示
発言  ぱっせんじゃー  - 07/8/25(土) 20:18 -

引用なし
パスワード
   そもそも、

>応答を待つ状態

とはどのような状態でしょう?

【51024】Re:ユーザーフォームの表示
発言  Mimi  - 07/8/25(土) 22:57 -

引用なし
パスワード
   UserForm上で
Label1とTextBox1の両方を書いてみましたが、問題なく枚数の移動が
表示されます。
一度この種のコードを印刷のPrintOutのところに入れてテストできません
でしょうか?

Dim i As Long
 For i = 1 To 9
  Me.Label1.Caption = i & "枚目の印刷をしています。"
  TextBox1.Text = i & "枚目の印刷をしています。"
 Next
  Application.Wait Now + TimeValue("00:00:01") '一秒時間を取っています 
 
  Me.Label1.Caption = "処理が終わりました。"
  Me.TextBox1.Text = "処理が終わりました。"

【51031】Re:ユーザーフォームの表示
質問  acch  - 07/8/26(日) 7:59 -

引用なし
パスワード
   下記のようにやってみましたが、やはり一時停止(×取消ボタンで解除します)します。


Dim i As Long
Sub demo()
 For i = 1 To 9
 With UserForm1
  .Label1.Caption = i & "枚目の印刷をしています。"
  .TextBox1.Text = i & "枚目の印刷をしています。"
 End With
 UserForm1.Show
 Next
  Application.Wait Now + TimeValue("00:00:11") '一秒時間を取っています
 With UserForm1
  .Label1.Caption = "処理が終わりました。"
  .TextBox1.Text = "処理が終わりました。"
 End With
 UserForm1.Show
End Sub

【51034】Re:ユーザーフォームの表示
回答  ikeri  - 07/8/26(日) 11:03 -

引用なし
パスワード
   こんにちは。
>下記のようにやってみましたが、やはり一時停止(×取消ボタンで解除します)します。

基本的なところを理解されていないように見受けます。

>UserForm1.Show
↑この行は、UserForm1が閉じらるるまで次の行には進みません。
だから 一時停止 するのは正しい動作です。

では、どうすればいいかは、すでにレスが出ています。
これまでの回答をよくお読みください。

【51035】Re:ユーザーフォームの表示
質問  acch  - 07/8/26(日) 14:21 -

引用なし
パスワード
   レスを見ても分かりません。ユーザーフォームをを表示させるには
userform1.showを記述する必要があると思いますが、記述すれば、一時停止します。??? すみませんがもっとはっきり教えてください。

【51036】Re:ユーザーフォームの表示
発言  bb  - 07/8/26(日) 14:50 -

引用なし
パスワード
   SSさんの回答
vbModelessは
試されましたか?

【51037】Re:ユーザーフォームの表示
発言  neptune  - 07/8/26(日) 14:54 -

引用なし
パスワード
   ▼acch さん:
こんにちは

>レスを見ても分かりません。ユーザーフォームをを表示させるには
>userform1.showを記述する必要があると思いますが、記述すれば、
>一時停止します。??? すみませんがもっとはっきり教えてください。
 
【51021】SS - 07/8/25(土) 20:12
は試してみましたか?

勿論、これぐらいは自分で調べているとは思いますが、
userformのShow メソッド
の解説には
//////////////以下引用////////////////////
ユーザー フォームがモードレスのとき、次のコードは中断されずに継続して実行
されます。モードレス フォームは、タスク バーや、ウィンドウのタブ オーダー
には表示されません。

ちょっと省略

ユーザー フォームがモーダルの場合、アプリケーション内の他の部分を使用する
前に、ユーザーは必ず応答する必要があります。ユーザー フォームを非表示に
するか、またはアンロードするまで、次のコードは実行されません。
ユーザー フォームが表示されると、アプリケーション内の他のフォームは無効
になりますが、他のアプリケーションのフォームは有効です。
////////////////////引用終わり///////////////
とあります。

印刷をどういう風にしているか知りませんが、
【51021】SS - 07/8/25(土) 20:12
は、処理の仕方によってはこれが原因のことも考えられる、という
内容のResのです。

【51055】Re:ユーザーフォームの表示
質問  acch  - 07/8/27(月) 8:56 -

引用なし
パスワード
   いろいろご指摘ありがとうございます。
Useform1.Show vbmodelessも試してみました。
Showを実行するたびにユーザーフォームが一瞬表示されます。ですから、更新内容が確認できません。

【51057】Re:ユーザーフォームの表示
発言  SS  - 07/8/27(月) 9:32 -

引用なし
パスワード
   ▼acch さん:
>Showを実行するたびにユーザーフォームが一瞬表示されます。
上述から一時停止してしまうのは解決したと考えて良いのですか?
でしたら、
>ですから、更新内容が確認できません。
は、別内容の質問になりますね。
一時停止が問題だったことから、入力イベントは適当ではないと思いますので
For Next の空回しで時間調整するとかはどうですか?

また、UserFormは、Unloadしなければ消えないと思うのですが・・・
そのタイミングも見直すと良いかもしれません。

>いろいろご指摘ありがとうございます。
>Useform1.Show vbmodelessも試してみました。
>Showを実行するたびにユーザーフォームが一瞬表示されます。ですから、更新内容が確認できません。

【51058】Re:ユーザーフォームの表示
発言  neptune  - 07/8/27(月) 9:32 -

引用なし
パスワード
   ▼acch さん:
こんにちは

もう少し全体像、印刷処理とUserForm表示の関係とか、
どのような処理をしているかが見えないとなんともいえません。
秘密なら・・・誰かが想像して答えてくれるかもしれませんが????

これに答えた上で識者のアドバイスをお待ちください。

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