- ベストアンサー
エクセルで特定の文字を入力した場合の警告表示について
- エクセルで特定の文字を入力した場合に、警告メッセージが表示されるようにする方法について教えてください。
- データの入力規則では特定の文字を制限することができず、マクロを使用する必要があります。
- C列とE列で特定の文字(×または―)が選択された場合に、警告メッセージが表示されるようにする方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> どのようにすれば列E,G,I,Kにも設定できますでしょうか? If Application.Intersect(Target, Range("E:E","G:G","I:I","K:K")) Is Nothing Then を以下のようにしてみてください。 If Application.Intersect(Target, Range("E:E,G:G,I:I,K:K")) Is Nothing Then 最初の If Application.Intersect(Target, Range("E:E", "G:G")) Is Nothing Then が間違ってましたね。E,F,Gが対象になってました。すみません。
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1の追加です。 入力規則でしたら、C3を起点として規則を対応させたいセルを選択し ユーザー設定で =AND(C3<>"×",C3<>"ー") とすればできると思います。
お礼
kkkkkm さん ありがとうございます。 入力規則で、ユーザー設定 =AND(C3<>"×",C3<>"ー") としましたら出来ました。しかし、前に設定したプルダウンリストが消えてしまいました。 そこで、最初に教えて頂いたマクロを使ってみました。 Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Target, Range("E:E", "G:G")) Is Nothing Then Exit Sub End If If Target.Value = "×" Or Target.Value = "―" Then MsgBox "氏名欄に、×なら欠席と追記、―なら中止と追記して下さい", vbInformation End If Target.Offset(, -1).Select End Sub これもできました。 しかし、私は下のように、列E,G,I,Kにも設定したいのです。 D E F G H I J K 氏 名1 出欠 氏 名2 出欠 氏 名3 出欠 氏 名4 出欠 以下のように書き換えて、やってみたところ、マクロが実行されませんでした Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Target, Range("E:E","G:G","I:I","K:K")) Is Nothing Then Exit Sub End If If Target.Value = "×" Or Target.Value = "―" Then MsgBox "氏名欄に、×なら欠席と追記、―なら中止と追記して下さい", vbInformation End If Target.Offset(, -1).Select End Sub どのようにすれば列E,G,I,Kにも設定できますでしょうか? お教えいただければ幸いです。 図を挿入しようとしたら、最初の質問時に限るようで、分かりにくく申し訳ありません。 お手数をおかけして誠にすみません。よろしくお願い申し上げます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
該当するシートのシートモジュールに以下を記載して下さい。 Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Target, Range("C:C", "E:E")) Is Nothing Then Exit Sub End If If Target.Value = "×" Or Target.Value = "―" Then MsgBox "氏名欄に、×なら欠席と追記、―なら中止と追記して下さい", vbInformation End If Target.Offset(, -1).Select End Sub
お礼
kkkkkm さん 何度もありがとうございます。 できました。 Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Target, Range("E:E,G:G,I:I,K:K")) Is Nothing Then Exit Sub End If If Target.Value = "×" Or Target.Value = "―" Then MsgBox "×―の時は氏名欄に欠席or中止と書き加えて下さい", vbInformation End If Target.Offset(, -1).Select End Sub 分厚い本を買って調べる手間が省けました。 本当にありがとうございました。