プロが教えるわが家の防犯対策術!

エクセル95のマクロで質問です。
エクセルのファイルを開いた時、自動的に全画面表示にするには
Sub Auto_Open()
Application.DisplayFullScreen = True
End Sub
で、立ち上げた時自動的に全画面表示になりますよね。
これを最小化したい場合、このシート上に最小化ボタンをつけて
Sub Macro1()
Application.WindowState = xlMinimized
End Sub
というマクロを登録して最小化して、下のツールバーにアイコン化しました。
この場合ですが、次に、ツールバーのエクセルのアイコンをクリックしたとき、エクセル画面は全画面ではなくノーマルなものになってしまいます。
これを自動的に全画面表示にする場合はどうすればいいのでしょうか?

A 回答 (13件中1~10件)

もう一度だけ・・・



最小化マクロで、最小化が終わるまで、ループし、
最小化が終わったらフルスクリーンにもどし、マクロ終了

DoEventsを書いておけば、他の処理に影響はないと思います。(断言はできませんが)
もし、このような方法が、お好みでなければ、一度閉めて、再度質問してみてください。
(ここの質問は、もう私と、kazuhiko5681さん以外見ていないと思われます。)

Sub Macro1()
With Application
.WindowState = xlMinimized
Do While (.WindowState = xlMinimized)
DoEvents
Loop
.DisplayFullScreen = True
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました!
上記をコピーして標準モジュールに貼り、シート上にこさえた最小化ボタンにマクロ設定しましたら完全に動きました。感激しましたねえ!
最後に、Do While、DoEvents、Loopのそれぞれの意味を教えていただけないでしょうか?

お礼日時:2002/11/06 21:07

こんばんわ。

私はこれ以上貴方様のお役に立つような知識は持ち合わせておりません。誠に申し訳ございませんがお許し下さい。
    • good
    • 0
この回答へのお礼

大変お世話になり、ありがとうございました。
とても感謝いたしております。お許しだなんてめっそうもない!
ながなが質問いたしましてお許しくださいませ。
ほんとうに有難うございました。

お礼日時:2002/11/08 14:40

一難去ってまた一難・・・



私の書いた方法は、最小化している間、プログラムが実行されているので、
そういう事もあるとは思いましたが、600Kbとは・・・
私の使用しているファイルサイズは大きくて100Kb位
CPUは・・・忘れてしまいましたが、
その位なら、普通に動作します。

CPUの性能の問題もあるとは思いますが、このプログラムは、普通VBなどでコンパイルし、
Exeとして使用する方法なので

打開策としては、
(1)600Kbのファイルをいくつかのファイルに分割する。
(2)VB等でExeを作成し、EXCELを監視する。
(3)新しいパソコン(CPUがアップしたもの)を購入する。
(4)Excelバージョンをあげ、考える。
(5)この方法をあきらめ、新たな方法を探す。

ざっと考え付くものを上げてみました。
きっと(5)の方法を選択するとは思いますが・・・
既に述べたように、限界のなか、なかば強引に出した回答ですので
この他の回答となると、見つかるかどうか・・・

#9でも書いたように1度締めて、再度質問してみたほうが、
私よりも専門に(クラスやら、APIやら)回答してくださる方もおられますので
早いかもしれません。
もちろん引き続き、考えてはみますが(今度はAPIに挑戦!)
違う人の意見も取り入れた方がよいかもしれません。
なにぶんEXCEL95という事で、私の方で、テストする事が困難です。

回答しておいて、無責任ですが、何卒ご了承願います。
    • good
    • 0
この回答へのお礼

大変お世話になり、ありがとうございました。
とても感謝いたしております。
このままでも使えないわけではないのでこれでいくことにしました。
ほんとうに有難うございました。

お礼日時:2002/11/08 14:39

こんばんわ。

動いてよかったですね。私の知識が足りないばかりにお役に立てず、申し訳ございませんでした。

taisuke555さんがご説明しておられる
While 条件式
・・・
Wend
という式の意味を、私の友達(30年間SEをやっている)にこの間私が質問したのですが、現在は使われていないので、覚える必要はないと言われました。昔のベーシックでよく使われていた書き方だそうです。

それと、Do・・・Loopの説明で不足している部分があるので、補足させていただきます。Do・・・Loopの構文は
Do until 条件式
・・・
Loop
Do While 条件式
・・・
Loop
Do
・・・
Loop Until 条件式
Do
・・・
Loop While 条件式
の4種類があります。untilの場合は、条件式になるまで、Whileの場合は条件式の間・・・の処理を繰り返し実行するという動作をします。
ここで大切なのは、Doの後に条件式を書くか、Loopの後に条件式を書くのかによって処理の繰り返し方が違うという点です。
Do until 条件式
・・・
Loop
Do While 条件式
・・・
Loop
この構文は、・・・条件式に当てはまってしまった場合は、・・・の処理は実行されません。
Do
・・・
Loop Until 条件式
Do
・・・
Loop While 条件式
この構文は、条件式に当てはまっていても1回は、・・・の処理が実行されてしまいます。

私の友達が、この違いを知らない人が非常に多いと言っていました。
このことは非常に重要なことだと思ったので、お知らせいたします。
    • good
    • 0
この回答へのお礼

重ね重ねありがとうございます。知識が足りないなんてとんでもない!
申し訳ないのは基本もろくに勉強してないわたしの方です。

下にも書きましたが、よろしければ再度お知恵を貸してください。
重複しますが、テスト用に作成したエクセル95のファイルでは最小化、再表示時の全画面化ともにスムーズに作動したのですが、本当に使いたかったファイル(600kbくらい。他にもいろいろマクロを使用しています)に書きいれたところ、最小化はスムーズに行くのですが、タスクバーのアイコンをクリックして再表示する時がかなり重いようで、何度かダブルクリックしないと再表示されないのです。これはどうしようもないのでしょうか?
(長時間放置したのではなく、最小化後すぐにタスクバーのエクセルアイコンをクリックしたのですが)

お礼日時:2002/11/07 13:44

お気に召して頂いたようで何よりです。


>Do While、DoEvents、Loopのそれぞれの意味
あまり説明は得意ではありませんが・・・

Do While 条件式
・・・
Loop

で1セットです。
条件式が成立している間Loopの中を回ります。
For ... Nextと似たようなものです。

今は
While 条件式
・・・
Wend
と書くみたいですけど・・・昔の人間なので。

他に
Do '無限ループ
・・・
Loop

Do Until 条件式 '条件式が成立するまで
・・・
Loop
などの書き方があり、
Do...Loopの間に Exit DoというコマンドがあるとLoopを強制的に抜けます。

DoEventsについては
「発生したイベントがオペレーティング システムによって処理されるように、
プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」
とヘルプにはのっていますが、
一時的にWindowsに制御を返す命令と言うことでしょうか・・・
長い処理(Do...Loopや、For i=1 to 10000000...Next)の時に
DoEventsを記述しないと、Windowsが反応なしと見なしてフリーズしてしまいます。(たしか)

こんな感じでわかりますでしょうか?
    • good
    • 0
この回答へのお礼

重ね重ねありがとうございます。
やはり基本から勉強しないといけないようです。有難う御座いました。
ここでポイントを発行して終了しようと思いましたが、大変勝手なのですが最後に一つだけお願いします。

テスト用に作成したエクセル95のファイルでは最小化、再表示時の全画面化ともにスムーズに作動したのですが、本当に使いたかったファイル(600kbくらい。他にもいろいろマクロを使用しています)に書きいれたところ、最小化はスムーズに行くのですが、タスクバーのアイコンをクリックして再表示する時がかなり重いようで、何度かダブルクリックしないと再表示されないのです。これはどうしようもないのでしょうか?

お礼日時:2002/11/07 13:39

EXCEL95に限らず、EXCEL自体のイベントという物が無いような気がします。


下記のサンプルは,VBなどで、使うのですが、
EXCELで使っていいのかわかりません。
実際に使ってみたところ、ブックの右側に、終了ボタン等が現れませんが、
普通の処理(文字を書くなど)はできました。

Sub auto_open()
Application.DisplayFullScreen = True
Do While (flg = 0)
If (Application.WindowState = xlMinimized) Then
Do While Application.WindowState = xlMinimized
DoEvents
Loop
Application.DisplayFullScreen = True
End If
DoEvents
Loop
End Sub

私もこれ位が限界です。あとは、VB等でEXCELを制御する方法がありますが・・・
あまり役に立たずすみません。
    • good
    • 0

こんにちは。

私はエクセル95を使ったことがないので、これ以上お知らせすることはできません。そこでマイクロソフトのサポートセンターを利用されてみてはいかがでしょうか。確実な答えを知ることができると思います。
エクセル95だと90日間の無料サポートがついていたと思います。もし使い切ってしまった時は、有料サポートを受けることができます。18000円費用がかかりますが、価値はあると思います。電話番号をお知らせしておきます。
03(5354)4500 無料サポート
0120-17-0196 有料サポート
    • good
    • 0
この回答へのお礼

すみません。お世話になりました。ご親切有難う御座いました。

お礼日時:2002/11/06 21:16

以下の操作で確認してください。



1、excel上で[Alt]+[F11]を押す。VisialBasicEditerに変更されます。
2、左上にプロジェクトと書いてある中に、
   VBAProject(現在のブック名)
     └Microsoft Excel Objects
        ├Sheet1
         ・・・
        └ThisWorkbook
まず、このようになっているか?もしあれば、ThisWorkBookをダブルクリック
   なければ、[Ctrl]+[R]で出てくるか確認?
   それでもでてこなければ、この操作はできません。

3.プログラムを書くエリアの上にある(General)と書いてあるコンボボックスを選択して
   [WorkBook]に変更
   隣のコンボボックスの[SelectionChange]を[WiowReseize]に変更すると

Private Sub Workbook_WindowResize(ByVal Wn As Window)
end sub

と表示されますので、以下のようにします。
Private Sub Workbook_WindowResize(ByVal Wn As Window)
Application.DisplayFullScreen = True
End Sub

思ったようには、いっていないと思いますが、とりあえず。
この操作が出来ますか?

この回答への補足

質問の最初にも書きましたようにエクセル95なんです。
VisialBasicEditerは97以降のものだと思います。
95では無理なのでしょうかねえ。

補足日時:2002/11/05 10:59
    • good
    • 0

こんばんわ。

貴方様はコードをどのモジュールシートに書かれましたか?もし、標準モジュールシートもしくは各シートのモジュールシートに書かれたのだとしたならば動作しないと思います。This Workbookのモジュールシートに書いて実行してみて下さい。

この回答への補足

質問の最初にも書きましたようにエクセル95なんです。
モジュールは標準モジュールシートしかないようなのです。
95では無理なのでしょうかねえ。

補足日時:2002/11/05 10:57
    • good
    • 0

#3さんの回答が入りましたので、2つ確認です。



(1)Excelのアイコンをクリックした時、Auto_Activateの処理にいっていますか?
   たぶんいっていないと思うのですが、Auto_Activateの説明が無いので(Excel97,Excel2000)どうすればいいのか、補足できずにいます。

(2)Excel95には
   http://oshiete1.goo.ne.jp/kotaeru.php3?q=395786
   の質問ででている
   「Private Sub Worksheet_Change(ByVal Target As Range) 」
   は使用できますか?
   確認方法は、上記URLにあります。
   (質問者にある場合とない場合を記述したので、あったか、なかったか教えて欲しかったのですが・・・)
   あれば、楽なんですが・・・

以上2点、補足してください。(他の人の回答で解決すれば、無視してください)

この回答への補足

すみません。
質問の意味が理解できないのです。
もともとVBAにそんなに知識があるわけではないものですから。

補足日時:2002/11/04 21:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!