Excel VBA質問箱 IV

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

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


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

【40988】userformが閉じない てっちゃん 06/7/27(木) 13:07 質問[未読]
【40992】Re:userformが閉じない Jaka 06/7/27(木) 13:50 発言[未読]
【41002】Re:userformが閉じない てっちゃん 06/7/27(木) 15:52 質問[未読]
【41006】Re:userformが閉じない Ken 06/7/27(木) 16:34 発言[未読]
【41009】Re:userformが閉じない てっちゃん 06/7/27(木) 16:48 質問[未読]
【41016】Re:userformが閉じない Seraph 06/7/27(木) 18:08 発言[未読]
【41010】Re:userformが閉じない Jaka 06/7/27(木) 16:50 発言[未読]
【41011】Re:userformが閉じない てっちゃん 06/7/27(木) 17:03 発言[未読]
【41014】Re:userformが閉じない Jaka 06/7/27(木) 17:24 発言[未読]
【41027】Re:userformが閉じない 漂流民 06/7/27(木) 23:06 発言[未読]
【41029】Re:userformが閉じない てっちゃん 06/7/28(金) 8:04 お礼[未読]
【41034】Re:userformが閉じない foo 06/7/28(金) 9:34 質問[未読]
【41041】Re:userformが閉じない Jaka 06/7/28(金) 11:31 発言[未読]
【41066】Re:userformが閉じない foo 06/7/28(金) 14:35 発言[未読]

【40988】userformが閉じない
質問  てっちゃん  - 06/7/27(木) 13:07 -

引用なし
パスワード
   こんにちは、いつもお世話になっています。
教えていただきたいのですが、userform2にあるボタンをクリックしたらuserform2が閉じて、1が開くように次のコードをボタンに書き込みました。

Unload UserForm2
UserForm1.Show

次にuserform1にあるボタンをクリックして、userform1を閉じ2を開かせたいと思い
userform1にあるボタンに次のコードを書き込みました。

Unload UserForm1
UserForm2.Show

しかし、userform1は閉じないままその上に重ねてuserform2が出てしまいます。
なぜですか?

【40992】Re:userformが閉じない
発言  Jaka  - 06/7/27(木) 13:50 -

引用なし
パスワード
   ▼てっちゃん さん:
>しかし、userform1は閉じないままその上に重ねてuserform2が出てしまいます。
>なぜですか?
この原因は、再現させてないのでよく解りませんが、

>Unload UserForm2
>UserForm1.Show
メインプログラムから、UserForm2を表示しているのなら、こう言う書き方は止めた方が良いです。
UserForm1の呼び出し元がUnloadされて無くなっているから、元に戻れなくなる可能性もあります。(戻るための命綱が切れてるって感じ)

sub Main()
 UserForm1.show
 UserForm2.Show
End sub

とかいておけば、良いです。

>Unload UserForm1
>UserForm2.Show ←これいらない。

【41002】Re:userformが閉じない
質問  てっちゃん  - 06/7/27(木) 15:52 -

引用なし
パスワード
   ▼Jaka さん:
>▼てっちゃん さん:
>>しかし、userform1は閉じないままその上に重ねてuserform2が出てしまいます。
>>なぜですか?
>この原因は、再現させてないのでよく解りませんが、
>
>>Unload UserForm2
>>UserForm1.Show
>メインプログラムから、UserForm2を表示しているのなら、こう言う書き方は止めた方が良いです。
>UserForm1の呼び出し元がUnloadされて無くなっているから、元に戻れなくなる可能性もあります。(戻るための命綱が切れてるって感じ)
>
>sub Main()
> UserForm1.show
> UserForm2.Show
>End sub
>
>とかいておけば、良いです。
>
>>Unload UserForm1
>>UserForm2.Show ←これいらない。


ごめんなさい意味がいまいちわかりませんでした・・・。
もう一度、説明させていただきます。

ディスクトップにショートカットを作っていて、クリックするとそのブックが表示され、それと同時にuserform2がでてきます。userform2はメニューのformの為このform上には6つのぼたんがあります。
まだ1つのボタンにしかコードを記入してないのですが、そのボタンをクリックしてuserform1を呼び出します。呼び出すと同時に、userform2(メニュー)は画面上から消したいのです。そしてuserform1上で入力(作業)し、ボタン(閉じる)をクリックしてuserform1を画面上から消し、userform2(メニュー)再び画面上に出したいのです。

【41006】Re:userformが閉じない
発言  Ken  - 06/7/27(木) 16:34 -

引用なし
パスワード
   メインフォーム(UserForm2)では
Private Sub CommandButton1_Click()

  Me.Hide
  UserForm1.Show
  Me.Show
  
End Sub

サブフォーム(UserForm1)では
Private Sub CommandButton1_Click()

  Unload Me
  
End Sub

これでどうでしょうか?

【41009】Re:userformが閉じない
質問  てっちゃん  - 06/7/27(木) 16:48 -

引用なし
パスワード
   ▼Ken さん:
>メインフォーム(UserForm2)では
>Private Sub CommandButton1_Click()
>
>  Me.Hide
>  UserForm1.Show
>  Me.Show
>  
>End Sub
>
>サブフォーム(UserForm1)では
>Private Sub CommandButton1_Click()
>
>  Unload Me
>  
>End Sub
>
>これでどうでしょうか?


だめですuserform1でクリックしてもuserform1の上に2が出てしまいます・・・。
ちなみに、プロジェクトのthisworkbookに次のコードを記入しているのですが、
Sheets("初期").Select
Range("A1").Select
UserForm2.Show
これは問題ないのでしょうか?

【41010】Re:userformが閉じない
発言  Jaka  - 06/7/27(木) 16:50 -

引用なし
パスワード
   Win2000sp4 & EXL2000SR4 だと下記コードでちゃんと動きました。
(今は確かめるすべがありませんが、EXL97の時と違うような....。)

Sub auto_open()
UserForm2.Show
End Sub

Form1モジュール
Private Sub CommandButton1_Click()
Unload UserForm1
UserForm2.Show
End Sub

Form2モジュール
Private Sub CommandButton1_Click()
Unload UserForm2
UserForm1.Show
End Sub

--------
Unload UserForm×で無く。
Unload Me
にしてみたらどうでしょうか。

また、
Unload Me
Doevanets  ←これ入れた方が良いかも
UserForm1.Show

【41011】Re:userformが閉じない
発言  てっちゃん  - 06/7/27(木) 17:03 -

引用なし
パスワード
   ▼Jaka さん:
>Win2000sp4 & EXL2000SR4 だと下記コードでちゃんと動きました。
>(今は確かめるすべがありませんが、EXL97の時と違うような....。)
>
>Sub auto_open()
>UserForm2.Show
>End Sub
>
>Form1モジュール
>Private Sub CommandButton1_Click()
>Unload UserForm1
>UserForm2.Show
>End Sub
>
>Form2モジュール
>Private Sub CommandButton1_Click()
>Unload UserForm2
>UserForm1.Show
>End Sub
>
>--------
>Unload UserForm×で無く。
>Unload Me
>にしてみたらどうでしょうか。
>
>また、
>Unload Me
>Doevanets  ←これ入れた方が良いかも
>UserForm1.Show


Doevanets を入れると 
subまたはfunctionが定義されていませんと、エラーメッセージがでます。

【41014】Re:userformが閉じない
発言  Jaka  - 06/7/27(木) 17:24 -

引用なし
パスワード
   >Doevanets を入れると 
>subまたはfunctionが定義されていませんと、エラーメッセージがでます。
すみません。スペル間違えました。
DoEvents

【41016】Re:userformが閉じない
発言  Seraph  - 06/7/27(木) 18:08 -

引用なし
パスワード
   こんにちは。
通りすがりのものです。
横やりすいません。

下記のコードを

Me.Hide
UserForm1.Show vbModal
Me.Show

とするとうまくいくと思うのですが、
モードレスじゃないとダメなのでしょうか?


▼てっちゃん さん:
>▼Ken さん:
>>メインフォーム(UserForm2)では
>>Private Sub CommandButton1_Click()
>>
>>  Me.Hide
>>  UserForm1.Show
>>  Me.Show
>>  
>>End Sub
>>
>>サブフォーム(UserForm1)では
>>Private Sub CommandButton1_Click()
>>
>>  Unload Me
>>  
>>End Sub
>>
>>これでどうでしょうか?
>
>
>だめですuserform1でクリックしてもuserform1の上に2が出てしまいます・・・。
<<以下略>>

【41027】Re:userformが閉じない
発言  漂流民  - 06/7/27(木) 23:06 -

引用なし
パスワード
   ▼てっちゃん さん:
こんばんわ

こーいうこと?

'標準モジュール
Sub auto_open()
  UserForm2.Show vbModeless
End Sub

'ユーザーフォーム1
Private Sub CommandButton1_Click()
  UserForm2.Show vbModeless
  Unload UserForm1
End Sub

'ユーザーフォーム2
Private Sub CommandButton1_Click()
  UserForm1.Show vbModeless
  Unload UserForm2
End Sub


ハズしてたらすみません^^

【41029】Re:userformが閉じない
お礼  てっちゃん  - 06/7/28(金) 8:04 -

引用なし
パスワード
   おはようございます。皆さん沢山のアドバイスありがとうございました。
漂流民さんのやり方で、unloadとshowを逆に記入し、無事希望通りのことができました。
助かりました。

【41034】Re:userformが閉じない
質問  foo  - 06/7/28(金) 9:34 -

引用なし
パスワード
   すいません、便乗質問なんですが、

>'ユーザーフォーム1
>Private Sub CommandButton1_Click()
>  UserForm2.Show vbModeless
>  Unload UserForm1
>End Sub
>
>'ユーザーフォーム2
>Private Sub CommandButton1_Click()
>  UserForm1.Show vbModeless
>  Unload UserForm2
>End Sub

Unloadした後にLoadせずいきなりShowで構わないんでしょうか?
HelpではUnloadするとメモリ上から削除され、Loadしないとプログラムから操作できないよって書いてあるんですが・・・

【41041】Re:userformが閉じない
発言  Jaka  - 06/7/28(金) 11:31 -

引用なし
パスワード
   >Unloadした後にLoadせずいきなりShowで構わないんでしょうか?
>HelpではUnloadするとメモリ上から削除され、Loadしないとプログラムから操作できないよって書いてあるんですが・・・
ほんとに書いてありませすねぇ。
詳しくはよく解りませんが
Showだけで、Loadと表示が行われます。

因み、Loadしなくても触れます。これでもLoadされた状態になります。
フォームにテキストボックスを2つ作って実行。

標準モジュール
Sub mmm()
UserForm1.TextBox1.Value = 1111
MsgBox UserForm1.TextBox1.Value & vbLf & UserForm1.TextBox2.Value
UserForm1.Show
End Sub

フォームモジュール
Private Sub UserForm_Initialize()
TextBox2.Value = 3333
End Sub

【41066】Re:userformが閉じない
発言  foo  - 06/7/28(金) 14:35 -

引用なし
パスワード
   私も自分で試してみました。

確かにUnloadした後でも操作できますね。
やはりフォームにアクセスした時点で自動的にLoadされるということでしょうか。

あと、Terminateイベントに処理を入れてみて分かったんですが、フォーム右上の閉じるボタンで閉じた時にも呼ばれるってことは、この時もUnloadされるみたいですね。(既知?)
Hideメソッドで閉じた時は呼ばれませんでした。

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