dポイントプレゼントキャンペーン実施中!

あるワークブックで、ひとつひとつのセルの内容が長いため、そのワークブックを開くと数式バーが非表示になり、閉じるときは再表示にしてから閉じたいのです。

今はとりあえず、コマンドボタンを二つ作って、ひとつは数式バーの非表示、もうひとつは数式バー再非表示後終了用としたいと思っています。

非表示は、マクロの記録で、簡単にできるのですが、再表示後終了ができません。

Application.DisplayFormulaBar = True
ActiveWorkbooks.Close

上の用にVBAに記述すると、「実行時エラー 424 オブジェクトが必要です」と表示されてしまいます。

どのように変えればいいのでしょうか?

また、一番の希望は上に書いたように、そのワークブックを開くと数式バーが非表示になり、閉じるときは再表示にしてから閉じたいのですが、VBAでそのようなことは可能でしょうか? もし可能なら、教えていただけるとうれしいです。よろしくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

こんな方法もあるのですね。

確かに、他の方法では、他のブックにも影響が出ますね。だから、おっしゃるように、アクティブブックだけで、数式バーが表示になれば、いうことはないです。

で、やってみました。いいです、これ!

ほんと助かりました。これでとっても便利に使うことができます。ありがとうございました。

お礼日時:2005/10/21 16:46

登録する「イベント」を適切に選択すれば、ご希望の動作になります。


> 非表示は、マクロの記録で、簡単にできるのですが
ツール → マクロ → VisualBasicEditor を開くと、上記のマクロは
「WorkBook_Open」に記述されていると思います。
(エディタの右上にあるコンボボックスの表示を確認)
その状態から、コンボボックスの中の「Workbook_BeforeClose」を
選択すると

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

こんな表示が出ますので、このPrivate~End Subの行の間に

Application.DisplayFormulaBar = True
と記述してあげればOKです。
    • good
    • 0
この回答へのお礼

非表示をマクロの記録を使ってVBに記述させた場合、
「WorkBook_Open」に記述されているのではなく、標準モジュールの中に記述されていました。

で、

sub WorkBook_Open

end sub
this workbook の中に記述すると、おっしゃるようにエディタの右上にあるコンボボックスの中にいろいろなイベントが選べるようになりました。

そして、そのいろいろなイベントのところに、実行したいコマンドを記述すればいいのですね。

なるほどーー。忘れていたことが、大分蘇ってきました。ありがとうございました。

お礼日時:2005/10/21 16:13

>ActiveWorkbooks.Close



ActiveWorkbook.Close ですね。

マクロで終了させなくても、普通の終了方法で設定を変更させる事が出来ます。

標準モジュールの
Auto_Open()
Auto_Close()
若しくは、ThisWokbook イベントの
Workbook_Open()
Workbook_BeforeClose(Cancel As Boolean)
に、表示・非表示のマクロを記述すると自動的に実行してくれます。
    • good
    • 0
この回答へのお礼

早速教えていただいて、ありがとうございます。

できましたーー。(^-^)

それから、ActiveWorkbooks.Close ではなくて、ActiveWorkbook.Close なのですね。ひとつしかブックを開けていないのに、複数にしたのがいけなかったのですね。なるほどーー。

あと、標準モジュールに
Sub Auto_Open()
Application.DisplayFormulaBar = False

End Sub
と、
Sub Auto_Close()
Application.DisplayFormulaBar = True

End Sub
を付け加えたら、うまくいきました。
あと、ThisWokbook イベントの中に記述しても、いけるのですね。

大分前に少しだけ、かじったことがあって、確かそういうのもあった気はしていたのですが、これで、はっきりしました。とっても助かりました。ありがとうございました。

お礼日時:2005/10/21 15:32

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