アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2007で、ファイルを閉じるとその状態が全部保存されるように下記VBAを使ったファイルを作りました。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 ThisWorkbook.Save
End Sub
ファイルのシート数は全部で6枚です。ファイルを開くとsheet5だけが表示します。マクロを有効にするとそのシートを非表示にしてsheet1からsheet4が表示するようにしてあります。
リボンは非表示にして操作できないようにしてあります。この状態でもファイルを開いている間に誰かがシート挿入タブ等でシートを挿入して閉じてしまうとその分も保存されてしまい、シートがどんどん増えてしまいます。ブックの保護をするとシート表示切り替えがうまくいかないみたいです。シート挿入タブを非表示にする方法はありますか。なければVBAでシート挿入禁止はどのように書くのでしょうか。

A 回答 (4件)

追記、



見出しを消して
ActiveWindow.DisplayWorkbookTabs = False

シートの切り替えばボタンを追加してマクロで
Sheets("Sheet2").Select
とか
    • good
    • 0
この回答へのお礼

NO2と同じ方でしたね。今の自分にはこの方法が向いているなと感じています。ありがとうございました。大変助かりました。

お礼日時:2011/01/26 00:56

こういう問題を考えるときには、シート挿入のイベントがあるかどうかを調べると良かろう。

あるとその機会をとらえて、手を打てる。
本件は「ThisWorkbook」のイベントに、たまたま下記があるので、下記を入れておくと、質問の要求にこたえられるのではないか。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.DisplayAlerts = False
MsgBox "シート挿入禁止"
Sh.Delete
Application.DisplayAlerts = True
End Sub
    • good
    • 3
この回答へのお礼

私には初めてのイベント。こういうのもあるんですね。
かわいらしいメッセージボックスが出てきました。参考になりありがとうございました。

お礼日時:2011/01/26 00:54

EXCEL 2003 の場合


ツール → オプション
のオプションダイアログに
シート見出しというチェックボックスが有ります

ActiveWindow.DisplayWorkbookTabs = true
    • good
    • 0
この回答へのお礼

エクセル2007の場合はシート見出しを非表示にするチェックボックスは見当たりませんでした。
教えていただいたtrueをfalseで試してみました。
見出しがないのでシートの切り替えがうまくいくか不安でしたがうまくいったのでありがたいです。切り替えはボタンにマクロの登録でやろうと思います。ありがとうございました。

お礼日時:2011/01/26 00:53

>ファイルを開くとsheet5だけが表示します。

マクロを有効にするとそのシートを非表示にしてsheet1からsheet4が表示するようにしてあります。

このマクロの前後でブックの保護解除と設定が近道かと思います。

ActiveWorkbook.Unprotect’ここでブック保護解除
お使いのシート表示のコード
ActiveWorkbook.Protect’ここでブック保護設定
    • good
    • 0
この回答へのお礼

そうですよね、最も基本ができていませんでした。他のマクロを実行させるときはシート保護の解除と設定を入れていたのに。ブックの保護は初めてだったので気が付きませんでした。ありがとうございます。

お礼日時:2011/01/26 00:51

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

このQ&Aを見た人はこんなQ&Aも見ています