
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
「Cancel = True」とはどういう意味でし
Word(ワード)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
EXCELマクロ 保護されているシートのダイアログを表示させない方法
Visual Basic(VBA)
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
5
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
6
シートが保護されている状態で、セルを選択した時に表示されるメッセージ
Visual Basic(VBA)
-
7
エクセルVBA 作業後に選択範囲を解除する方法
Excel(エクセル)
-
8
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
9
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
10
エクセル関数で日付かどうかの確認?
Excel(エクセル)
-
11
Excelの入力規則で2列表示したい
Excel(エクセル)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
14
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
15
【VBA】Worksheet_changeイベントで特定のキーが押されたときだけ無効にしたい
Visual Basic(VBA)
-
16
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
-
17
VBAから変更した時だけイベントを発生させない方法
Excel(エクセル)
-
18
Excel マクロ 閉じるボタン
Visual Basic(VBA)
-
19
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
20
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの複雑なシフト表から...
-
エクセルの関数について
-
【マクロ】実行時エラー '424':...
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
Office2021のエクセルで米国株...
-
【マクロ】左のブックと右のブ...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
エクセルシートの見出しの文字...
-
LibreOffice Clalc(またはエク...
-
【マクロ】別ファイルへマクロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報