
エクセル95のマクロで質問です。
エクセルのファイルを開いた時、自動的に全画面表示にするには
Sub Auto_Open()
Application.DisplayFullScreen = True
End Sub
で、立ち上げた時自動的に全画面表示になりますよね。
これを最小化したい場合、このシート上に最小化ボタンをつけて
Sub Macro1()
Application.WindowState = xlMinimized
End Sub
というマクロを登録して最小化して、下のツールバーにアイコン化しました。
この場合ですが、次に、ツールバーのエクセルのアイコンをクリックしたとき、エクセル画面は全画面ではなくノーマルなものになってしまいます。
これを自動的に全画面表示にする場合はどうすればいいのでしょうか?
No.9ベストアンサー
- 回答日時:
もう一度だけ・・・
最小化マクロで、最小化が終わるまで、ループし、
最小化が終わったらフルスクリーンにもどし、マクロ終了
DoEventsを書いておけば、他の処理に影響はないと思います。(断言はできませんが)
もし、このような方法が、お好みでなければ、一度閉めて、再度質問してみてください。
(ここの質問は、もう私と、kazuhiko5681さん以外見ていないと思われます。)
Sub Macro1()
With Application
.WindowState = xlMinimized
Do While (.WindowState = xlMinimized)
DoEvents
Loop
.DisplayFullScreen = True
End With
End Sub
ありがとうございました!
上記をコピーして標準モジュールに貼り、シート上にこさえた最小化ボタンにマクロ設定しましたら完全に動きました。感激しましたねえ!
最後に、Do While、DoEvents、Loopのそれぞれの意味を教えていただけないでしょうか?
No.12
- 回答日時:
一難去ってまた一難・・・
私の書いた方法は、最小化している間、プログラムが実行されているので、
そういう事もあるとは思いましたが、600Kbとは・・・
私の使用しているファイルサイズは大きくて100Kb位
CPUは・・・忘れてしまいましたが、
その位なら、普通に動作します。
CPUの性能の問題もあるとは思いますが、このプログラムは、普通VBなどでコンパイルし、
Exeとして使用する方法なので
打開策としては、
(1)600Kbのファイルをいくつかのファイルに分割する。
(2)VB等でExeを作成し、EXCELを監視する。
(3)新しいパソコン(CPUがアップしたもの)を購入する。
(4)Excelバージョンをあげ、考える。
(5)この方法をあきらめ、新たな方法を探す。
ざっと考え付くものを上げてみました。
きっと(5)の方法を選択するとは思いますが・・・
既に述べたように、限界のなか、なかば強引に出した回答ですので
この他の回答となると、見つかるかどうか・・・
#9でも書いたように1度締めて、再度質問してみたほうが、
私よりも専門に(クラスやら、APIやら)回答してくださる方もおられますので
早いかもしれません。
もちろん引き続き、考えてはみますが(今度はAPIに挑戦!)
違う人の意見も取り入れた方がよいかもしれません。
なにぶんEXCEL95という事で、私の方で、テストする事が困難です。
回答しておいて、無責任ですが、何卒ご了承願います。
大変お世話になり、ありがとうございました。
とても感謝いたしております。
このままでも使えないわけではないのでこれでいくことにしました。
ほんとうに有難うございました。
No.11
- 回答日時:
こんばんわ。
動いてよかったですね。私の知識が足りないばかりにお役に立てず、申し訳ございませんでした。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回は、・・・の処理が実行されてしまいます。
私の友達が、この違いを知らない人が非常に多いと言っていました。
このことは非常に重要なことだと思ったので、お知らせいたします。
重ね重ねありがとうございます。知識が足りないなんてとんでもない!
申し訳ないのは基本もろくに勉強してないわたしの方です。
下にも書きましたが、よろしければ再度お知恵を貸してください。
重複しますが、テスト用に作成したエクセル95のファイルでは最小化、再表示時の全画面化ともにスムーズに作動したのですが、本当に使いたかったファイル(600kbくらい。他にもいろいろマクロを使用しています)に書きいれたところ、最小化はスムーズに行くのですが、タスクバーのアイコンをクリックして再表示する時がかなり重いようで、何度かダブルクリックしないと再表示されないのです。これはどうしようもないのでしょうか?
(長時間放置したのではなく、最小化後すぐにタスクバーのエクセルアイコンをクリックしたのですが)
No.10
- 回答日時:
お気に召して頂いたようで何よりです。
>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が反応なしと見なしてフリーズしてしまいます。(たしか)
こんな感じでわかりますでしょうか?
重ね重ねありがとうございます。
やはり基本から勉強しないといけないようです。有難う御座いました。
ここでポイントを発行して終了しようと思いましたが、大変勝手なのですが最後に一つだけお願いします。
テスト用に作成したエクセル95のファイルでは最小化、再表示時の全画面化ともにスムーズに作動したのですが、本当に使いたかったファイル(600kbくらい。他にもいろいろマクロを使用しています)に書きいれたところ、最小化はスムーズに行くのですが、タスクバーのアイコンをクリックして再表示する時がかなり重いようで、何度かダブルクリックしないと再表示されないのです。これはどうしようもないのでしょうか?
No.8
- 回答日時:
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を制御する方法がありますが・・・
あまり役に立たずすみません。
No.7
- 回答日時:
こんにちは。
私はエクセル95を使ったことがないので、これ以上お知らせすることはできません。そこでマイクロソフトのサポートセンターを利用されてみてはいかがでしょうか。確実な答えを知ることができると思います。エクセル95だと90日間の無料サポートがついていたと思います。もし使い切ってしまった時は、有料サポートを受けることができます。18000円費用がかかりますが、価値はあると思います。電話番号をお知らせしておきます。
03(5354)4500 無料サポート
0120-17-0196 有料サポート
No.6
- 回答日時:
以下の操作で確認してください。
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では無理なのでしょうかねえ。
No.4
- 回答日時:
#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点、補足してください。(他の人の回答で解決すれば、無視してください)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) 【マクロ】プリントスクリーンした画像をエクセルに貼付して印刷したい 6 2022/11/30 20:11
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Excel(エクセル) マクロの保存先、開いてるすべてのブックの意味 エクセルを開き、表示→マクロ→マクロの表示と順番に開く 3 2022/06/25 17:52
- Excel(エクセル) エクセルのVBAにショートカットキーの割り当て 3 2022/07/13 14:19
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
UMLでの例外処理
-
VBAでCOPYを繰り返すと、処理が...
-
リョウ・・・量?料?
-
【Excel】特定の文字を含むセル...
-
月度は何て読みますか?
-
VB.NET Excelを読み込んでDataT...
-
VBAでループ内で使う変数名を可...
-
男性に対して、『女性への気遣...
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
ユーザーフォーム「frm_基本❶」...
-
DoEventsがやはり分からない
-
FFTの結果ついて
-
EXCEL VBA マクロ 実行する度に...
-
インタラクティブの反対語は?
-
希望のサブルーチンを読み出す...
-
DAOとADO
-
gas 重複行の削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
DoEventsがやはり分からない
-
月度は何て読みますか?
-
お家デートをしててハグを長い...
-
VB.NET Excelを読み込んでDataT...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
VBAでCOPYを繰り返すと、処理が...
-
メルカリのメルカードで買い物...
-
インタラクティブの反対語は?
-
Loadイベント中にほかのイベン...
-
リョウ・・・量?料?
-
vba 空のデータをSplitする時の...
-
findは動くがfindnextがマクロ...
おすすめ情報