[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームを表示してブックを最小化したい…』(毛虫)
お世話になっております。 何が悪くて上手くいかないのか、自分ではわからなくなってしまいました。
今、やりたいことは
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.