[[20110530103045]] 『ユーザーフォームを表示してブックを最小化したい』(毛虫) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームを表示してブックを最小化したい…』(毛虫)

 お世話になっております。
 何が悪くて上手くいかないのか、自分ではわからなくなってしまいました。

 今、やりたいことは

 1.マクロが書かれたブックが開くと同時にユーザーフォームを開きたい(願わくばモードレス)
 2.上記と同じブックを最小化する。

 つまるところ「ブックは最小化表示にしてユーザーフォームを開く」と言うことなのです。
 そこで、標準モジュールに下記のようなマクロを書いてみました。

 Sub auto_open()
     Application.WindowState = xlMinimized
     UserForm1.Show
 End Sub

 これを実行すると最小化はするのですが、ユーザーフォームが表示されないうえにエクセルが「応答なし」になってしまいます。
 最小化したあとにユーザーフォームを開くことは不可能だっただろうか?と思い

 Sub auto_open()
     UserForm1.Show
     Application.WindowState = xlMinimized
 End Sub

 にすると、今度はユーザーフォームが表示されるのにブックが最小化されません。

 何故このようなことになっているのか、なにとぞ、ご教授のほど、宜しくお願いします。

 エクセルのバージョンは2003
 OSはWindowsXPです。

 ユーザーフォームの初期化時に制御してはいかがでしょう。
 Private Sub UserForm_Initialize()
 Application.WindowState = xlMinimized
 End Sub
 
(みやほりん)(-_∂)b

 かぶっちゃったけどそのままで。

 一つ目は最小化されたExcelの中でユーザーフォームが開かれちゃってる。
 二つ目はモーダルでユーザーフォームを開いてるんでそこでプログラムが止まってる。

 まず、モードレスで開くんだったら、

 Sub Auto_Open()
    UserForm1.Show vbModeless
 End Sub
 ってして。

 ただ、そのまま単純に
 Application.WindowState = xlMinimized
 ってするとユーザーフォームも巻き込まれるんで
 ユーザーフォームの方に 
 Private Sub UserForm_Initialize()
    Application.WindowState = xlMinimized
 End Sub
 と最小化処理を入れてみて。
 (春日野馨)


 (みやほりん)(-_∂)bさま、ご教授ありがとうございます。
 早速試してみたのですが、やはりブックが最小化してユーザーフォームが開かない上に「応答なし」になってしまいました。

 フォームのモジュールに書き込むので合っていますよね…?

 (春日野馨)さま、ご教授ありがとうございます。
 原因がわかってすっきりしました。
 ですが、お教えいただいた方法でもやはりエクセルの最小化にユーザーフォームが巻き込まれてしまったようです。
 ひょっとしてAuto_Openでユーザーフォームを開いたあとにエクセルを最小化しているから巻き込まれてしまっているのでしょうか?

 申し訳ありません。卵が先か鶏が先か…ではありませんが、ユーザーフォームを開くのとブックの最小化はどちらを先にしたほうが良いのでしょうか?
 (毛虫)

 うーん、私のところもWindowsXP+Excel2003なんだけど標準モジュールに

 Sub Auto_Open()
    UserForm1.Show vbModeless
 End Sub

 ユーザーフォームのモジュールに

 Private Sub UserForm_Initialize()
    Application.WindowState = xlMinimized
 End Sub
 で、Excel本体は最小化してユーザーフォームだけ表示になってます。

 駄目もとでAuto_OpenじゃなくてThisWorkbookのWorkbook_Openを使ってみるとか

 Private Sub UserForm_Initialize()
    DoEvents
    Application.WindowState = xlMinimized
 End Sub
 とかしてみたらどうだろう?
 (春日野馨)

 (春日野馨)さま、ありがとうございます。
 試してみましたが、最小化できませんでした。
 最近パソコンを入れ替えたのですが、その影響がある…と言うことがあるのでしょうか?
 (ただし、入れ替える前のパソコンもWindowsXPのExcel2003なのであまり関係はないかと)

 提案していただいたThisWorkbookにWorkbook_Openの方法も試してみましたが、だめでした。
 新規のブックでユーザーフォームだけ作ってもう一度試してみたいと思います。


 ぶつかった。
 エクセルのバージョンの違いや別ブックが開かれていた場合などで挙動が変わるけど・・。
 Private Sub Auto_Open()
 Application.WindowState = xlMinimized
 AppActivate "Microsoft Excel"
 '↓2000用の場合必・・確か?。
 AppActivate Application.Caption
 UserForm1.Show
 End Sub
 さすがのさるとびえっちゃん

 新規のブックでは春日野馨さまにご提示いただいた方法で上手くいったので、
 問題の起こった(?)ブックに何かフォームを開いてブックを最小化する動きを阻害する何らかのオブジェクトがあるのかもしれません
 (たとえば別のどこかに同時に動かすには無理のあるAuto_Openを入れて、それを忘れている等)

 さすがのさるとびえっちゃんさま、ご教授ありがとうございます。
 お教えいただいた方法でも問題の起こったブックは駄目でした(新規のブックでは正常に作動しました)

 やはり問題のブックに何か余計なものが含まれているとしか思えなくなってきました。
 もう一度、最初から見直してみようと思います。

 みなさま、お忙しい中、ご指導ありがとうございました。

 (すぐに名乗り忘れる毛虫)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.