質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%

Q&A

解決済

3回答

24757閲覧

Excelの入力規則が破られてしまう

null368

総合スコア39

2グッド

0クリップ

投稿2016/11/01 04:38

Excelの入力規則を使って、プルダウンを作りました。

普通に、プルダウンの中の項目以外を入力するとアラートが表示され、
入力が拒否されるのですが、入力セルで、右クリック→「ドロップダウンリストから選択」から入力すると、
リストにない項目でも入力されてしまいます。

これを回避する方法はあるのでしょうか。
よろしくお願いします。

A4がプルダウンになっている。
イメージ説明

普通に「あ」と入力すると拒否される
イメージ説明

右クリック→「ドロップダウンリストから選択」から入力すると入力が成功する
イメージ説明

kopio, Y.H.👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rura

2016/11/01 04:47

差し支えなくば、ソースコードをご記載下さい
null368

2016/11/01 04:52

すみません。Excelメニューバーの「データ」>「データ入力規則」で作成したので、ソースコードはありません。
guest

回答3

0

ベストアンサー

これってExcelのバグなんですかね?
対策として3つ考えました。

  1. 対象セルの上に空セルを入れる(入力されたセルが連続しているとドロップダウンリスト化されてしまうので)
  2. VBAで入力チェックを行う(Changeイベントで)
  3. 「ドロップダウンリストから選択」メニューを無効化する

1番がお手軽かなと思います。
レイアウト上無理だとしても、空行を追加して非表示にしておけば良いですし。


追記
2のサンプルコードを書いておきます。

VBA

1Private Sub Worksheet_Change(ByVal Target As Range) 2 If Target.Row = 1 And Target.Column = 1 Then ' チェック対象にするセルを指定 3 If Target.Validation.Value = False Then 4 MsgBox "入力エラー", vbCritical 5 Application.Undo ' 入力前の状態に戻す 6 End If 7 End If 8End Sub

投稿2016/11/01 05:18

編集2016/11/07 00:52
ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jawa

2016/11/02 00:39 編集

横から失礼します。m(__)m 「ドロップダウンリストから選択」からも抜け道があるとは、今回初めて知りました。 実はこれ以外のに抜け道に、セルのコピー&ペースト(値の貼り付け)というものもあります。 抜け道を塞ぐことが目的なら、2番しか残りそうもないですね(^_^; しかし、Excelに「無効データのマーク」という機能が備わっているということは、こういった無効なデータを入力する術があることがわかっているけど対策はしていない、ということなんでしょうか(-''-;
ttyp03

2016/11/02 00:37

あ、ホントだw そうなると2番一択ですね。
null368

2016/11/04 07:00

ご回答ありがとうございます! 説明不足で申し訳ないのですが、もし不適切な値が入力された場合は、入力された瞬間にアラートを出したいです。それもVBAで可能なのでしょうか? それと、セルのコピー&ペーストの抜け道は、許容範囲なので、ttyp003さんの「ドロップダウンリストから選択」メニューを無効化する の詳細が気になります。
ttyp03

2016/11/07 00:14

すみません、回答遅くなりました。 コピペが許容範囲でリストから選択は許さないというのは矛盾してそうですが、とりあえずご要望のメニューの無効化です。 Application.CommandBars("Cell").FindControl(, 1966).Enabled = False これで無効化はできますが、Excel全体に効いてしまいますので、対象のブック以外も同時に開くことがあるのであれば、こまめな制御が必要になります。 ブック単位の制御でよければWorkbook_OpenイベントとWorkbook_BeforeCloseイベントにでも入れて、TrueとFalseを制御すればOKです。
ttyp03

2016/11/07 00:53

対策2のコードを追記しておきましたので参考にしてください。
guest

0

個人的には「ドロップダウンリストから選択」よりも「値の貼り付け」の方がよく使われている、難易度の低い操作な気がするので。
異常値を「ドロップダウンリストから選択」で入力する行為はNG、異常値を「コピーして値の貼り付け」はOKという部分がちょっと引っ掛かりました。

コピペなんてしない(できない?)のなら話は分からないでもないのですが。。

一応、参考までにセル入力値のチェックを行うサンプルを提示します。
(ttyp03さんの②案です。)

Dim oldCell As Range 'チェック対象セル 'セル移動イベント Private Sub Worksheet_SelectionChange(ByVal Target As Range) If oldCell Is Nothing Then 'チェック対象セルが未設定の場合 '今回の移動後のセルを次回のチェック対象セルとして保管して処理終了 Set oldCell = Target Exit Sub End If If oldCell.Column = 1 Then 'A列なら入力規則に反していないかをチェック If oldCell.Validation.Value = False Then 'NGの場合、メッセージを表示 MsgBox "範囲外の値です。" 'チェック対象セルにフォーカスを戻す oldCell.Select Exit Sub End If End If '移動後のセルを次回のチェック対象セルとして保管 Set oldCell = Target End Sub

今回はVBAタグではなくExcelタグでのご質問でしたので、出過ぎた真似だったかもしれませんが、参考になれば幸いです。

投稿2016/11/07 00:59

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jawa

2016/11/07 01:01

ちょうどttyp03さんからも提示があったようで、ほんと出過ぎた真似だったかもしれません(^_^;
null368

2016/11/09 04:22

とんでもないです! ありがとうございました!
guest

0

最初に、前回の私の回答が完全に的外れな回答であったことを訂正してお詫びします。
大変申し訳ございませんでした。

改めて、こちらでも色々調べましたが、どうやら
0. データの入力規則で設定した「リスト」
0. 右クリックの「ドロップダウンリスト」

はお互い全く異なるものであるため、入力規則のリスト設定値以外のデータが
入力されてしまう、ということが分かりました。

1.のリストは特定のセル範囲内の任意の値を入力するものですが、2.のリストの場合は
「同じ列のデータの中から任意のデータを連続して入力する場合」に利用する際に
利用できるものです。
参考:「インストラクターのネタ帳」の「リストを作らずにドロップダウン−ドロップダウンリストから選択」より

2.の場合、提示された例では「あ」「壱」というリストが表示されて、それからの入力となるはずです。

このため、入力規則の「リスト」とは異なる値が入力可能となる、というもので、
Excelのバグではなく、ある意味「表現が紛らわしいが、入力には便利な」機能です…。

回避方法ですが、ttyp03様やJawa様のマクロが一番効果的かと思われます。
(イベントプロシージャ等を利用していますので、これでしたら目的を達成可能かと。)

該当のコンテキストメニューを一時的に削除する、という非常に乱暴なやり方も考えたんですが、
これはExcelのデフォルトのメニューでやると非常に危険ですので絶対に行なわないようにして下さい…
(Excelのインストールやり直し等の良くない事態を招きますので。)
→この件ですが、

Excel

1CommandBars("Cell").Controls("ドロップダウン リストから選択(K)").Delete

で一旦削除し、ブックを閉じる段階で

Excel

1CommandBars("Cell").Reset

で戻す事を想定したものです。

ttyp03様のコードは私も知りませんでした…。己の未熟さを恥じるばかりです…。

ttyp03様へ
御提示のコマンド、大変参考になりました。ありがとうございます。
と同時に、横入りしながら的外れな回答をしてしまい、大変申し訳ございませんでした…。

投稿2016/11/05 12:15

編集2016/11/09 07:14
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問