Excel VBA質問箱 IV

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

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


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

【21553】ユーザーフォームが非表示にならないので... ヒロ 05/1/23(日) 20:54 質問[未読]
【21554】Re:ユーザーフォームが非表示にならないの... りすりす 05/1/23(日) 22:05 回答[未読]
【21556】Re:ユーザーフォームが非表示にならない... ヒロ 05/1/23(日) 23:09 お礼[未読]
【21558】Re:ユーザーフォームが非表示にならない... りすりす 05/1/24(月) 0:11 回答[未読]
【21561】Re:ユーザーフォームが非表示にならない... りすりす 05/1/24(月) 0:25 回答[未読]
【21559】Re:ユーザーフォームが非表示にならないの... [名前なし] 05/1/24(月) 0:19 回答[未読]
【21598】Re:ユーザーフォームが非表示にならない... ヒロ 05/1/24(月) 19:55 お礼[未読]

【21553】ユーザーフォームが非表示にならないので...
質問  ヒロ E-MAIL  - 05/1/23(日) 20:54 -

引用なし
パスワード
   はじめてユーザーフォームを使ってみました。
本に書いてあったとおりにユーザーフォームの表示、非表示を記述してみたのですが、うまく非表示にならない箇所があります。
原因は何でしょうか?
例えば、

Unload Userform1
Userform10.show

と記述してもUserform1の上にUserform10が重なって表示されたり、

Userform10上にあるコマンドボタンで

Unload Userform10
Sheets("sheet1").Range("A1").Select

を実行するとマクロが終了してプロパティウィンドウが表示されたり、開いたsheet1の上にUserform1が表示されたりします。

初心者なものですから、マクロの記述が重かったりしてメモリ不足を起こしているのでしょうか?

非常にわかりにくい質問で申し訳ありませんが、どなたか原因に心当たりのあるかたがいらっしゃいましたら是非教えてください。

【21554】Re:ユーザーフォームが非表示にならない...
回答  りすりす  - 05/1/23(日) 22:05 -

引用なし
パスワード
   ▼ヒロ さん:
>はじめてユーザーフォームを使ってみました。
>本に書いてあったとおりにユーザーフォームの表示、非表示を記述してみたのですが、うまく非表示にならない箇所があります。
>原因は何でしょうか?
>例えば、
>
>Unload Userform1
>Userform10.show
>
>と記述してもUserform1の上にUserform10が重なって表示されたり、
>
>Userform10上にあるコマンドボタンで
>
>Unload Userform10
>Sheets("sheet1").Range("A1").Select
>
>を実行するとマクロが終了してプロパティウィンドウが表示されたり、開いたsheet1の上にUserform1が表示されたりします。
>
>初心者なものですから、マクロの記述が重かったりしてメモリ不足を起こしているのでしょうか?
>
>非常にわかりにくい質問で申し訳ありませんが、どなたか原因に心当たりのあるかたがいらっしゃいましたら是非教えてください。


>Unload Userform1
>Userform10.show
この文をどこにかいてありますか?

もし
Userform1のなかでしたら、
>Userform10.show
>Unload Userform1
と順番を逆にしましょう。

Unload
とは、メモリからいらないよって捨てることです。
単に非表示にするだけなら
Hideにしたほうがいいです。
Closeもヘルプで参考にしてください。

【21556】Re:ユーザーフォームが非表示にならない...
お礼  ヒロ E-MAIL  - 05/1/23(日) 23:09 -

引用なし
パスワード
   ▼りすりす さん:
>ご回答ありがとうございます。
ご指摘の方法は試してみたのですが駄目でした。
Unload は Userform1上ではなくそこに配置しているCommandButtonに記述しています。
CommandButtonではなく標準モジュールに記述した方が良いのでしょうか?
Hideを使った場合メモリ不足に陥ったりはしませんか?
ちなみにUserformを10枚、標準モジュールを11個作っています。

ヒロ


▼ヒロ さん:
>>はじめてユーザーフォームを使ってみました。
>>本に書いてあったとおりにユーザーフォームの表示、非表示を記述してみたのですが、うまく非表示にならない箇所があります。
>>原因は何でしょうか?
>>例えば、
>>
>>Unload Userform1
>>Userform10.show
>>
>>と記述してもUserform1の上にUserform10が重なって表示されたり、
>>
>>Userform10上にあるコマンドボタンで
>>
>>Unload Userform10
>>Sheets("sheet1").Range("A1").Select
>>
>>を実行するとマクロが終了してプロパティウィンドウが表示されたり、開いたsheet1の上にUserform1が表示されたりします。
>>
>>初心者なものですから、マクロの記述が重かったりしてメモリ不足を起こしているのでしょうか?
>>
>>非常にわかりにくい質問で申し訳ありませんが、どなたか原因に心当たりのあるかたがいらっしゃいましたら是非教えてください。
>
>
>>Unload Userform1
>>Userform10.show
>この文をどこにかいてありますか?
>
>もし
>Userform1のなかでしたら、
>>Userform10.show
>>Unload Userform1
>と順番を逆にしましょう。
>
>Unload
>とは、メモリからいらないよって捨てることです。
>単に非表示にするだけなら
>Hideにしたほうがいいです。
>Closeもヘルプで参考にしてください。

【21558】Re:ユーザーフォームが非表示にならない...
回答  りすりす  - 05/1/24(月) 0:11 -

引用なし
パスワード
   ▼ヒロ さん:
>▼りすりす さん:
>>ご回答ありがとうございます。
>ご指摘の方法は試してみたのですが駄目でした。
>Unload は Userform1上ではなくそこに配置しているCommandButtonに記述しています。
>CommandButtonではなく標準モジュールに記述した方が良いのでしょうか?
標準モジュールにかいても使い方を間違うと同じことが起こると思います。

>Hideを使った場合メモリ不足に陥ったりはしませんか?
>ちなみにUserformを10枚、標準モジュールを11個作っています。
普通の編集フォーム程度ならhideでいいと思いますけど。
たくさんメモリを使うようなことしていたら
unloadも考えないといけないでしょう
使う内容によりますので何ともいえません


新規でワークブックつくってフォーム3つとボタン
シートにぼたんをおいて下のをコピーして張ってみるといいです、
きちんときえます。


Private Sub CommandButton2_Click()
' Sheet1
 UserForm1.Show (0)
 UserForm2.Show (0)
 UserForm3.Show (0)
 UserForm1.Left = 0
 UserForm2.Left = 200
 UserForm3.Left = 400
End Sub


Private Sub CommandButton1_Click()
'UserForm1
Unload UserForm3
Unload UserForm2
Unload UserForm1
End Sub


Private Sub CommandButton1_Click()
'UserForm2
Unload UserForm3
Unload UserForm2
Unload UserForm1
UserForm1.Show (0)
' ここに Unload UserForm2をかいたほうがいい。
' わざと順番かえてます
End Sub

Private Sub CommandButton1_Click()
'UserForm3
Unload UserForm2
Unload UserForm1
End Sub

【21559】Re:ユーザーフォームが非表示にならない...
回答  [名前なし]  - 05/1/24(月) 0:19 -

引用なし
パスワード
   たぶんだけど・・・

>Unload Userform1
Application.ScreenUpdating = True
DoEvents 'いらないと思うけど一応
>Userform10.show

>Unload Userform10
Sheets("Sheet1").Select
Range("A1").Select
>'Sheets("sheet1").Range("A1").Select

としてみたらどうでしょう。

【21561】Re:ユーザーフォームが非表示にならない...
回答  りすりす  - 05/1/24(月) 0:25 -

引用なし
パスワード
    UserForm1.Show (1) ' UserForm1.Show
とすると
ユーザーがフォームのなんらかの処理をおえるのを待つモードですから
UserForm1が非表示になるまで、次の行には制御がいきませんから
きをつけましょうね。
Show とすると ShowModalで 

 UserForm1.Show
 Sheet1.Cells(1, 1) = 1
として セルを眺めながら フォームを消すとわかると思います。

【21598】Re:ユーザーフォームが非表示にならない...
お礼  ヒロ E-MAIL  - 05/1/24(月) 19:55 -

引用なし
パスワード
   りすりすさん、名前なしさん

いろいろありがとうございました。
おかげさまでプログラムが完成しました。
記述の方法や順番であんなに変わるとは思ってもみませんでした。
大変勉強になりました。
今度は私が回答者になれるようがんばります。
本当にありがとうございました。

ヒロ

▼[名前なし] さん:
>たぶんだけど・・・
>
>>Unload Userform1
>Application.ScreenUpdating = True
>DoEvents 'いらないと思うけど一応
>>Userform10.show
>
>>Unload Userform10
>Sheets("Sheet1").Select
>Range("A1").Select
>>'Sheets("sheet1").Range("A1").Select
>
>としてみたらどうでしょう。

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