Excel VBA質問箱 IV

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

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


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

【20086】ユーザフォームについて aki 04/11/27(土) 21:45 質問[未読]
【20089】Re:ユーザフォームについて かみちゃん 04/11/27(土) 22:19 発言[未読]
【20092】Re:ユーザフォームについて aki 04/11/28(日) 0:00 質問[未読]
【20094】Re:ユーザフォームについて かみちゃん 04/11/28(日) 0:09 発言[未読]
【20109】Re:ユーザフォームについて aki 04/11/28(日) 17:06 質問[未読]
【20116】Re:ユーザフォームについて [名前なし] 04/11/28(日) 20:31 発言[未読]
【20117】Re:ユーザフォームについて ちゃっぴ 04/11/28(日) 20:53 回答[未読]
【20118】Re:ユーザフォームについて かみちゃん 04/11/28(日) 20:54 発言[未読]
【20101】Re:ユーザフォームについて [名前なし] 04/11/28(日) 11:25 回答[未読]
【20147】Re:ユーザフォームについて aki 04/11/29(月) 17:20 お礼[未読]
【20152】Re:ユーザフォームについて aki 04/11/29(月) 20:01 お礼[未読]

【20086】ユーザフォームについて
質問  aki  - 04/11/27(土) 21:45 -

引用なし
パスワード
   ユーザフォームを表示させると、ユーザフォームがいくつも表示されてしまいます。
UserForm1.Showの前に必ず
Application.ScreenUpdating = Trueを実行しています。
お教えください。

【20089】Re:ユーザフォームについて
発言  かみちゃん  - 04/11/27(土) 22:19 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ユーザフォームを表示させると、ユーザフォームがいくつも表示されてしまいます。
>UserForm1.Showの前に必ず
>Application.ScreenUpdating = Trueを実行しています。

これだけでは何ともいえません。
もう少し具体的にコード提示をお願いします。

【20092】Re:ユーザフォームについて
質問  aki  - 04/11/28(日) 0:00 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>ユーザフォームを表示させると、ユーザフォームがいくつも表示されてしまいます。
>>UserForm1.Showの前に必ず
>>Application.ScreenUpdating = Trueを実行しています。
>
>これだけでは何ともいえません。
>もう少し具体的にコード提示をお願いします。

申し訳ありませんでした。言葉が足りませんでした。
ユーザフォームを表示させ、ユーザフォームを移動させると
ユーザフォームが複数表示されてしまいます。

Sub 選択()

en = 0
Application.ScreenUpdating = True
UserForm1.Show

If en = 1 Then
GoTo end1
End If

end1:
End Sub

Application.ScreenUpdating = Falseにすると
そのような現象になるのはわかっているのですが
お教えください。

【20094】Re:ユーザフォームについて
発言  かみちゃん  - 04/11/28(日) 0:09 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ユーザフォームを表示させ、ユーザフォームを移動させると
>ユーザフォームが複数表示されてしまいます。

「ユーザーフォームを移動させる」のは、どのようにしているのですか?
もしかして、マウスでドラッグをすると、残像のように残るということではないですよね?

>If en = 1 Then
> GoTo end1
>End If
>
>end1:
>End Sub

この部分が何をしているのかがわかりません。

Sub 選択()
 Application.ScreenUpdating = True
 UserForm1.Show
End Sub

とすると、どうなのでしょうか?

【20101】Re:ユーザフォームについて
回答  [名前なし]  - 04/11/28(日) 11:25 -

引用なし
パスワード
   フォームのInitializeイベントの最後にApplication.ScreenUpdating = Trueを
入れてみてはどうでしょうか。

【20109】Re:ユーザフォームについて
質問  aki  - 04/11/28(日) 17:06 -

引用なし
パスワード
   >「ユーザーフォームを移動させる」のは、どのようにしているのですか?
>もしかして、マウスでドラッグをすると、残像のように残るということではないですよね?
>
>>If en = 1 Then(ユーザフォームからの戻りでエラー処理をしています)
>> GoTo end1
>>End If
>>
>>end1:
>>End Sub
>
>この部分が何をしているのかがわかりません。
>
>Sub 選択()
> Application.ScreenUpdating = True
> UserForm1.Show
>End Sub
>
>とすると、どうなのでしょうか?

マウスでドラッグをすると、移動させると残像のように残ります。
入力できるユーザフォームはそのうちの1つだけです。

Sub 選択()
 Application.ScreenUpdating = True
 UserForm1.Show
End Sub

Private Sub UserForm_Initialize()
 Application.ScreenUpdating = True
End Sub

上記の処理をしてもだめです。

【20116】Re:ユーザフォームについて
発言  [名前なし]  - 04/11/28(日) 20:31 -

引用なし
パスワード
   そもそもApplication.ScreenUpdating = Falseは
どこで設定されてるんですか?

【20117】Re:ユーザフォームについて
回答  ちゃっぴ  - 04/11/28(日) 20:53 -

引用なし
パスワード
   「Application.ScreenUpdating」ですべてのmoduleに対し検索を実行し、
片っ端から、コメントアウトしましょう。

残像を表示させたくないなら、「Application.ScreenUpdating」は
Falseにしないことです。

【20118】Re:ユーザフォームについて
発言  かみちゃん  - 04/11/28(日) 20:54 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>マウスでドラッグをすると、移動させると残像のように残ります。
>入力できるユーザフォームはそのうちの1つだけです。

Sub 選択()
 UserForm1.Show
End Sub

これで、まず、ユーザーフォームが表示されると思いますが、表示したあとすぐに
マウスでドラッグして移動させても残像のように残りますか?
それとも、表示させたユーザーフォームの何かの処理をしたあとにマウスでドラッ
グして移動させたら残像のように残りますか?

もし、何かの処理をしたあとに、残像のように残るのであれば、その何かの処理を
見せていただく必要があります。

なお、参考になるかどうかわかりませんが、次のURLに書かれたような事象もあ
るようです。
http://www.keep-on.com/excelyou/1999lng4/199910/99090269.txt

【20147】Re:ユーザフォームについて
お礼  aki  - 04/11/29(月) 17:20 -

引用なし
パスワード
   ▼[名前なし] さん:
>フォームのInitializeイベントの最後にApplication.ScreenUpdating = Trueを
>入れてみてはどうでしょうか。

すべてのモジュールイベントの

Application.ScreenUpdating = False を
Application.ScreenUpdating = True に変更したところ

ユーザフォームの重複表示がなおりました。
後は各モジュールでステップインしながら検証したいと
思います。
皆様のご協力に感謝し、問題解決としたいと思います。
ありがとうございました。

【20152】Re:ユーザフォームについて
お礼  aki  - 04/11/29(月) 20:01 -

引用なし
パスワード
   ▼aki さん:
>▼[名前なし] さん:
>>フォームのInitializeイベントの最後にApplication.ScreenUpdating = Trueを
>>入れてみてはどうでしょうか。
>
>すべてのモジュールイベントの
>
>Application.ScreenUpdating = False を
>Application.ScreenUpdating = True に変更したところ
>
>ユーザフォームの重複表示がなおりました。
>後は各モジュールでステップインしながら検証したいと
>思います。
>皆様のご協力に感謝し、問題解決としたいと思います。
>ありがとうございました。

(追伸)
検証したところ不具合がわかりました。

Sub 作成()
en = 0
Worksheets("年月").Visible = False(パスワードが書かれているシートなので隠しています)
Worksheets("年月").Activate
pasw = Range("A20")(パスワードを取得)

UserForm2.Show

End Sub



Sub 作成()
en = 0
Worksheets("年月").Visible = True(修正)
Worksheets("年月").Activate
pasw = Range("A20")
Worksheets("年月").Visible = False(修正)
UserForm2.Show

End Sub

の処理ミスでした。

Application.ScreenUpdating = False ばかり気にしていたので
気がつきませんでした。

Worksheets("年月").Visible = Falseと
Application.ScreenUpdating = False の
関連性は不明ですが。ありがとうございました。

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