
あるワークブックで、ひとつひとつのセルの内容が長いため、そのワークブックを開くと数式バーが非表示になり、閉じるときは再表示にしてから閉じたいのです。
今はとりあえず、コマンドボタンを二つ作って、ひとつは数式バーの非表示、もうひとつは数式バー再非表示後終了用としたいと思っています。
非表示は、マクロの記録で、簡単にできるのですが、再表示後終了ができません。
Application.DisplayFormulaBar = True
ActiveWorkbooks.Close
上の用にVBAに記述すると、「実行時エラー 424 オブジェクトが必要です」と表示されてしまいます。
どのように変えればいいのでしょうか?
また、一番の希望は上に書いたように、そのワークブックを開くと数式バーが非表示になり、閉じるときは再表示にしてから閉じたいのですが、VBAでそのようなことは可能でしょうか? もし可能なら、教えていただけるとうれしいです。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんにちは。
KenKen_SP です。数式バー表示・非表示の設定は再設定されるまで継承されます。
例えば、Workbook_Open とか Auto_Open で数式バーを非表示にして
しまうと、同時に複数のブックを開くと分かりますが、全てのブック
で数式バーが消えてしまいます。
したがって、Activate と Deactivate イベントに書いた方が良いと
思います。
また、ブック全体で、あるいは特定シートだけで、、といった制御の
必要な部分によってマクロを書く場所が異なります。
例えば、特定ブックだけで数式バーの表示を操作するなら
'【Thisworkbook モジュール】
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.DisplayFormulaBar = False
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.DisplayFormulaBar = True
End Sub
例えば、特定のシートだけで数式バーの表示を操作するなら
'【シートモジュール】
Private Sub Worksheet_Activate()
Application.DisplayFormulaBar = False
End Sub
Private Sub Worksheet_Deactivate()
Application.DisplayFormulaBar = True
End Sub
こんな方法もあるのですね。
確かに、他の方法では、他のブックにも影響が出ますね。だから、おっしゃるように、アクティブブックだけで、数式バーが表示になれば、いうことはないです。
で、やってみました。いいです、これ!
ほんと助かりました。これでとっても便利に使うことができます。ありがとうございました。
No.2
- 回答日時:
登録する「イベント」を適切に選択すれば、ご希望の動作になります。
> 非表示は、マクロの記録で、簡単にできるのですが
ツール → マクロ → VisualBasicEditor を開くと、上記のマクロは
「WorkBook_Open」に記述されていると思います。
(エディタの右上にあるコンボボックスの表示を確認)
その状態から、コンボボックスの中の「Workbook_BeforeClose」を
選択すると
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
こんな表示が出ますので、このPrivate~End Subの行の間に
Application.DisplayFormulaBar = True
と記述してあげればOKです。
非表示をマクロの記録を使ってVBに記述させた場合、
「WorkBook_Open」に記述されているのではなく、標準モジュールの中に記述されていました。
で、
sub WorkBook_Open
end sub
this workbook の中に記述すると、おっしゃるようにエディタの右上にあるコンボボックスの中にいろいろなイベントが選べるようになりました。
そして、そのいろいろなイベントのところに、実行したいコマンドを記述すればいいのですね。
なるほどーー。忘れていたことが、大分蘇ってきました。ありがとうございました。
No.1
- 回答日時:
>ActiveWorkbooks.Close
ActiveWorkbook.Close ですね。
マクロで終了させなくても、普通の終了方法で設定を変更させる事が出来ます。
標準モジュールの
Auto_Open()
Auto_Close()
若しくは、ThisWokbook イベントの
Workbook_Open()
Workbook_BeforeClose(Cancel As Boolean)
に、表示・非表示のマクロを記述すると自動的に実行してくれます。
早速教えていただいて、ありがとうございます。
できましたーー。(^-^)
それから、ActiveWorkbooks.Close ではなくて、ActiveWorkbook.Close なのですね。ひとつしかブックを開けていないのに、複数にしたのがいけなかったのですね。なるほどーー。
あと、標準モジュールに
Sub Auto_Open()
Application.DisplayFormulaBar = False
End Sub
と、
Sub Auto_Close()
Application.DisplayFormulaBar = True
End Sub
を付け加えたら、うまくいきました。
あと、ThisWokbook イベントの中に記述しても、いけるのですね。
大分前に少しだけ、かじったことがあって、確かそういうのもあった気はしていたのですが、これで、はっきりしました。とっても助かりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別シートのマクロを実行する方法
-
Application.Runエラー(1004)
-
エクセルのマクロボタンが編集...
-
エクセルVBAで、ボタンの文字を...
-
private sub にしたらマクロが...
-
Access終了時にマクロまたはVBA...
-
マクロが登録できません
-
InputBox内の表示について
-
アクセス:検索フォームボタンに...
-
AccessでExcelファイルを印刷
-
エクセルの右クリックにオートS...
-
シート保護を掛けたまま並べ替...
-
access2010 コマンドまたはアク...
-
マクロ 戻るボタンを押したらシ...
-
Excel起動時に画面表示縮小を自...
-
エクセル VBA SendKeys ループ...
-
ワードでのラベル作成の自動化
-
マクロとモジュールの違いを教...
-
アクセスのマクロについて
-
excelで会議室予約表の作成(マ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別シートのマクロを実行する方法
-
Application.Runエラー(1004)
-
エクセルのマクロボタンが編集...
-
Access終了時にマクロまたはVBA...
-
エクセルVBAで、ボタンの文字を...
-
private sub にしたらマクロが...
-
access2010 コマンドまたはアク...
-
シート保護を掛けたまま並べ替...
-
マクロとモジュールの違いを教...
-
アクセスのマクロについて
-
エクセルのマクロ
-
InputBox内の表示について
-
エクセル VBA SendKeys ループ...
-
マクロ 戻るボタンを押したらシ...
-
特定のシートだけ印刷はマクロ...
-
マクロが登録できません
-
ExcelのVBAでDisplayalertsで警...
-
excelで会議室予約表の作成(マ...
-
Excel起動時に画面表示縮小を自...
-
Excel2002を閉じるときの個人用...
おすすめ情報