![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Cancel = True
MsgBox "キャンセルしました"
End Sub
Private Sub Worksheet_Deactivate()
Cancel = True
MsgBox "キャンセルしました"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cancel = True
MsgBox "キャンセルしました"
End Sub
以上のように使ってみましたが、どれも「キャンセルしました」とメッセージは出るものの、直前の操作(入力、シート切替、セル移動)はキャンセルされませんでした。
どこが間違っているのでしょうか?
No.5ベストアンサー
- 回答日時:
> セルへの入力を取り消す場合でいいです。
> たとえば、A1に5と入っていたのに3を入力されたので、5(というか以前の値)にもどす。
それでしたらこれが一番簡単な方法ではないでしょうか?3が入力されたらUndoしちゃうんです。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Value = 3 Then
Application.Undo
'MsgBox "キャンセルしました"
End If
End Sub
No.4
- 回答日時:
こんばんは。
簡単の為に、
A1に、3を入力したらそれをキャンセルして、
A1の値を元に戻すコードです。
Option Explicit
Dim W
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If Target.Value = 3 Then
MsgBox "3は入力禁止。キャンセルします"
Application.EnableEvents = False
Target.Value = W
Target.Activate
Application.EnableEvents = True
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
W = Target.Value
End If
End Sub
上記のコードをSheet1(どのSheetでも可)のモジュールにコピペし、
(1)先ず、A1に、3以外の数字を入力
(2)次に、3を入力すると「3は禁止」のメッセージ
(3)その後、A1の値が元に戻る
こんなんでええですか?
No.3
- 回答日時:
おはようござりまする。
>Worksheet_Changeイベントをキャンセルするには
>どのようにコーディングしなければならないのでしょうか?
ただ単にWorksheet_Changeイベントをキャンセルするコードと言われても、意図するキャンセルの動作が具体的に分からないとコーティングはできませぬ。
例えば、
どのセルに対して、どういった条件の時に、
また、単に入力値を取り消すだけでいいのか等々、
この回答への補足
お返事ありがとうございます♪
セルへの入力を取り消す場合でいいです。
たとえば、A1に5と入っていたのに3を入力されたので、5(というか以前の値)にもどす。
よろしくお願いしま~す。
No.2
- 回答日時:
snoopy64さんの回答にちょと補足しますと。
例を挙げるとブックを閉じる(×ボタン等)前には
下記のイベントが発生するわけですが、
引数を見てみると、Cancelがありますよね。
こういう場合に、Cancel=Trueが使えるわけです。
下記のコードをThisWorkbookに貼り付けて
ブックの閉じるボタン(×)をクリックしてみてください。
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox "×ボタンが押されましたが、その動作をキャンセルします"
Cancel = True
End Sub
で、質問のように引数にCancelがない場合は
その動作を自分でコーディングしなければなりません。
それから、老婆心で一言。
変数の宣言は必ずするようにしましょう。
Option Explicitステートメントは必須です。
これがあれば、CANCEL=TRUE、のところで
変数未定義のエラーが発生し質問も別なもの
になったかも知れませんね。
以上。
> 引数を見てみると、Cancelがありますよね。
> こういう場合に、Cancel=Trueが使えるわけです。
大変良くわかりました♪
> で、質問のように引数にCancelがない場合は
> その動作を自分でコーディングしなければなりません。
そうなんですか。では、たとえばWorksheet_Changeイベントをキャンセルするにはどのようにコーディングしなければならないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
「Cancel = True」とはどういう意味でし
Word(ワード)
-
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
5
worksheet_changeがループする
PowerPoint(パワーポイント)
-
6
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
11
【VBA】Worksheet_changeイベントで特定のキーが押されたときだけ無効にしたい
Visual Basic(VBA)
-
12
Excel 条件によって入力禁止にする
Excel(エクセル)
-
13
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
14
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
15
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
16
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
17
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
18
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
19
コマンドボタンのEnterイベント後に、フォーカスを移動したい。
その他(Microsoft Office)
-
20
ドロップダウンリスト 自動表示したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel関数-文字列で自動作成さ...
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
職場の人から聞かれており、こ...
-
ユーザー定義関数をアドイン登...
-
Excelで50個のセルに同じ文字を...
-
スプレッドシート、Excelでの数...
-
Microsoft Officeの中古は信用...
-
エクセルで不等号記号(≠)が上に...
-
スプレッドシートで使う数式を...
-
エクセルでの特別な文字を上に...
-
エクセル日付 文字列の関数がエ...
-
A列とB列を参照してC列に連番を...
-
エクセルVBA、別ブックへ転記す...
-
各ページの1番上の表示について
-
エクセルでセルに標準で入力さ...
-
EXCELの質問です 119から足した...
-
pdfの表をexcelにはりつけて計...
-
Excelのif関数で文字が見えなく...
-
【マクロ】アクティブセルにブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報