質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

1回答

6888閲覧

特定の条件以外で「保存をさせない」マクロについて

masajin

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2021/02/22 08:35

いつもお世話になっております。
VBA歴数ヶ月の会社員です。
先日も類似した質問をさせていただいたのですが、本件もご教示いただけますと幸いです。

社員(500名程度)が用いるExcelシートに関して、
上司より、ExcelVBAによる業務負荷の軽減を命じられているのですが、
「とある条件が成り立っていないときにはシートの保存ができない仕様にしてほしい」
との要望を受けました。

例えばですが、特定のセルA1、B1、C1の合計が100になっていない場合には
保存ボタンを押しても保存ができない状態にしてほしい、とのことでした。

自分なりにいろいろと調べてはいるのですが、なかなかそれに類する
マクロが見つからず(上書き保存をできなくすることは可能なような気もしています)、
関数でなんらかの対応ができるように考えてもいるのですが、
かと言って、はっきりと無理だとは伝えあぐねている状態です。

これを受けまして質問なのですが、上記のようなマクロは作成可能なのでしょうか?
あるいはこれに類する作業はVBAではなく、更に上位のプログラミング言語や
環境設定(知識がないためこの表現も適切なのか自信がありませんが)が必要になるのでしょうか?

つたない質問ですが、何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

たとえばこんな感じでどうですか。

VBA

1Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 2 If WorksheetFunction.Sum(Sheets(1).Range("A1:C1")) = 100 Then 3 MsgBox "よし、通れ" 4 Else 5 MsgBox "だが断る" 6 Cancel = True 7 End If 8End Sub

投稿2021/02/22 08:54

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jinoji

2021/02/22 09:01

なお、上記マクロは、標準モジュールではなくThisWorkbookってところに書きます。
masajin

2021/02/25 05:58

jinoji様 ご返信が遅くなり、大変失礼いたしました。 こちらのマクロで無事に、望んでいた状態になりました!大変感謝いたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問