• ベストアンサー

【エクセル】「消去してもいいですか?」と警告がでるようにしたい

セルに入力した数値をうっかり消してしまわないように、 backspaceを押してしまったら、 「消去してもいいですか?」 と警告がでるようにしたいです。 入力規則で出来るのでしょうか?? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

入力規則ではないですが、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キーでワークシートへもどります

noname#150256
質問者

お礼

実践してみたらできました。 大変参考になりました。 ご回答ありがとうございました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。Wendy02です。 ほとんど、分からないという前提でお話しますと、 Alt +  F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、先に述べたコード、全部を貼り付けて、 Alt + Q で、画面を閉じます。 次に、Alt + F8 で、マクロウィンドウを出して、 Auto_Open という文字を探して、実行(R) をクリック で、設定されます。 次からは、その登録したブックを起動すれば、設定されますし、ブックを閉じれば、設定は解除されます。

noname#150256
質問者

お礼

再度ご回答ありがとうございます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 標準モジュールに設定してください。 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 '---------------------------------------------------------

noname#150256
質問者

お礼

「Auto_Open 」という言葉は始めて耳にして 自分なりに調べてみたんですがよくわからなくて・・・ 学習したら実践してみたいと思います。 ご回答ありがとうございました。

  • yuu8969
  • ベストアンサー率12% (2/16)
回答No.1

入力値の種類:ユーザ設定 空白値を無視する:チェック外す 数式:=LEN(A1)>0 入力規則で実現するとこんな感じでしょうか。 これをA1で作成してセルを全セルにコピーすれば出来ると思います。

noname#150256
質問者

補足

できました。 ありがとうございます。 ちなみにdeleteでは消えてしまうんですが これを回避する方法はご存知でしょうか? よろしくお願い致します。

関連するQ&A

専門家に質問してみよう