- ベストアンサー
【エクセル】「消去してもいいですか?」と警告がでるようにしたい
セルに入力した数値をうっかり消してしまわないように、 backspaceを押してしまったら、 「消去してもいいですか?」 と警告がでるようにしたいです。 入力規則で出来るのでしょうか?? よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
入力規則ではないですが、VBAでやってみました。 手順を書きますので試してみてください。 1.シートのタブを右クリックし、「コードの表示」を選択 2.出てきたVisualBasicEditor(白い部分)に下記のコードをコピペ '*****ここからコピペ Dim x Private Sub Worksheet_SelectionChange(ByVal Target As Range) x = Target.Value End Sub Private Sub Worksheet_Change(ByVal Target As Range) If x = "" Then Exit Sub msg = IIf(Target.Value = "", "消去", "変更") ans = MsgBox(msg & "していい?", vbYesNo + vbQuestion, "(⌒o⌒)?") If ans = vbNo Then With Application .EnableEvents = False .Undo .EnableEvents = True End With End If End Sub '*****ここまでコピペ 3.Alt+F11キーでワークシートへもどります
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。Wendy02です。 ほとんど、分からないという前提でお話しますと、 Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、先に述べたコード、全部を貼り付けて、 Alt + Q で、画面を閉じます。 次に、Alt + F8 で、マクロウィンドウを出して、 Auto_Open という文字を探して、実行(R) をクリック で、設定されます。 次からは、その登録したブックを起動すれば、設定されますし、ブックを閉じれば、設定は解除されます。
お礼
再度ご回答ありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 標準モジュールに設定してください。 Auto_Open を実行すれば、設定されます。 また、登録したブックを保存して、再度開けても、設定されます。それをやめる時は、Auto_Close を実行するか、登録したブックを閉じれば、設定は解除されます。 BackSpace でも、Delete でも、同じ仕様になります。 なお、このキーで削除した場合は、ショートカット[Ctrl + Shift + z] で、値だけですが、元に戻ります。 '--------------------------------------------------------- Private Buf As Variant Sub Auto_Open() Call SetKey End Sub Sub Auto_Close() Call SetOffKey End Sub Sub SetKey() '設定用マクロ Application.OnKey "{BS}", "AskMsg" Application.OnKey "{Delete}", "AskMsg" 'データを戻すためのショートカット(Ctrl + Shift + z) Application.OnKey "^+z", "BackData" End Sub Sub SetOffKey() '解除用マクロ Application.OnKey "{BS}" Application.OnKey "{Delete}" End Sub Sub AskMsg() If TypeName(Selection) = "Range" Then Buf = Selection If Selection.Count = 1 Then If VarType(Selection) = vbDouble Then If MsgBox("消去してもいいですか", vbQuestion Or vbOKCancel Or vbDefaultButton2) = vbCancel Then Buf = Empty Exit Sub Else Selection.ClearContents End If Else Application.SendKeys "{F2}", True Application.SendKeys "+{Home}", True Application.SendKeys "{Delete}", True End If Else Selection.ClearContents End If End If End Sub Sub BackData() '削除したデータを戻す Dim u1 As Long Dim u2 As Long On Error Resume Next u1 = UBound(Buf, 1) u2 = UBound(Buf, 2) On Error GoTo 0 If u1 = 0 And u2 = 0 Then ActiveCell.Value = Buf Else ActiveCell.Resize(u1, u2).Value = Buf End If Buf = Empty End Sub '---------------------------------------------------------
お礼
「Auto_Open 」という言葉は始めて耳にして 自分なりに調べてみたんですがよくわからなくて・・・ 学習したら実践してみたいと思います。 ご回答ありがとうございました。
- yuu8969
- ベストアンサー率12% (2/16)
入力値の種類:ユーザ設定 空白値を無視する:チェック外す 数式:=LEN(A1)>0 入力規則で実現するとこんな感じでしょうか。 これをA1で作成してセルを全セルにコピーすれば出来ると思います。
補足
できました。 ありがとうございます。 ちなみにdeleteでは消えてしまうんですが これを回避する方法はご存知でしょうか? よろしくお願い致します。
お礼
実践してみたらできました。 大変参考になりました。 ご回答ありがとうございました。