[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ セルの値でメッセージ表示』(みのる)
いつもお世話になります。
シート1の"B1"セルは数式で、TRUE 又は FALSEになります。
シート1の"A1"セルの値が変化した時に、"B1"セルを参照し
FALSEの場合に
MSGBOXで"エラー"を表示させて YES で入力画面に戻り
別のマクロ実行や、ファイルの保存・終了が出来ないようしたい。
"B1"セルが TRUE の時は何もしない
丸投げで恐縮ですが、上記のコードをご教授願いたく。
何となく過去ログを参考にしましたが挫折しました
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, msg As String
・・・・・・
・・・・・・
< 使用 Excel:Excel2010、使用 OS:Windows7 >
>FALSEの場合に MSGBOXで"エラー"を表示させて YES で入力画面に戻り
入力画面に戻り というのが、ちょっとわからないところですが、B1 が False の場合にメッセージをだすこと自体は そのコードを書くべき場所も Private Sub Worksheet_Change(ByVal Target As Range) とわかっておられるわけですし また、B1 の式の参照先である A1 の変化があった時という条件も正しく把握しておられるわけですから みのるさん自身がコードを書くのは造作もないことなんだと思いますが?
ただ、わからないのは
>別のマクロ実行や、ファイルの保存・終了が出来ないようしたい。
ここです。 ファイル保存や終了を不可としたいなら ThisWorkbookモジュールの BeforeSave や BeforeClose で 当該シートの B1 がFalse なら Cancel=True としてやればよろしいのですが、 別マクロの実行をさせたくないというところが、その理由も含めて、よくわからないところです。
エクセル区画に対して、マクロ無効にする という荒業は昔はできましたので、今でもできると思いますが そうすると、そのあと、エクセルを終了させるまで一切のマクロが機能しません。 もちろん、BeforeSave や BeforeClose で仕掛けた判定も動きませんので、結果的には保存も終了もできてしまうことになります。
別マクロを動かしたくなければ、それぞれのマクロの先頭で当該シートのB1がFALSEならExit Sub とするしか 方法はないと思いますが?
(β) 2017/03/28(火) 01:49
なんとなく、A1 入力によって B1 が False になるようなことを入力規則で禁止したらいいだけのような気がしますが?
(β) 2017/03/28(火) 01:54
お世話になります。
深夜の返信ありがとうございます
煮詰まっていて質問しましたが
Private Sub Workbook_BeforeClose(Cancel As Boolean)
・・・
ブックを閉じる前に変更して解決しました。
また、よろしくお願いいたします。
(みのる) 2017/03/28(火) 21:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.