[[20110219210638]] 『空白と0以外のセルは入力禁止』(くば) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『空白と0以外のセルは入力禁止』(くば)
 A1:B10(文字列に設定されている)に数字を入力する場合
入力セルが0か空白であればそのまま入力でき
すでに数字が入力済みであれば、メッセージを出して入力を取り消す
(但し数字が入力済みのセルであっても0は入力可能、数字消去も可能)

 そういう方法があれば教えて下さい。


 入力規則を使う案です。

 データ → 入力規則 → 設定タブで入力値の種類を「整数」にし、
データを「次の値より小さい」にして最大値を「1」とします。
次に、エラーメッセージタブの、無効なデータが入力されたら
エラーメッセージを表示する にチェックを入れ、スタイルを
「停止」にし、任意のエラーメッセージを入力して「OK」でどうでしょか。
(ちぃちゃん)


 説明不足で申し訳ありません。
「1」より小さい数字のみを入力したい という事ではなく
すでに入力済みか若しくは空白のセルに対して
入力済みのセルの値が1以上であれば「0」の入力 又は 消去以外操作不可
そのセルの値が「0」 又は 空白であればどんな数字も入力を許可する
というような事です。

 この表のセルは最初は空白か「0」が入力されており、
そこへ数字をどんどん入力していくのですが
誤って入力済のところに再度入力して上書きしてしまうミスを
何とかできないと思いまして。

 入力規則は自分でも挑戦してみたのですが、できず
現在は
Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Range("a1:b10")) Is Nothing Then Exit Sub
 If Target.Count > 1 Then Exit Sub
 If Target.Value <= 0 Then
     Exit Sub
 Else
    Application.EnableEvents = False
          With Application
             .Undo
          End With
    Application.EnableEvents = True
  End If
End Sub
↑に挑戦しているのですが
0又は空白のセルに1以上の数字を入力しても元に戻ってしまいます。
どう考えればいいのか、教えて頂きたくて質問致しました。

 引き続きのご指導を頂けたら幸いです。
(くば)

 入力済みのところを消すことはできるのですよね?
 であれば入力制限を設けても、いったん消してから入力したら何でも入力できてしまうの
 ではないですか。

 いずれにせよ、イベントでは入力前の値を保持していませんので、どこか別の場所で現在の
 入力値を管理する必要があります。

 シート保護をかけておいて、入力済みにはロックをかけ、修正のためにはシート保護を外す
 ような仕組みで代替できないでしょうか。
 (Mook)

 Mookさんへ
>いずれにせよ、イベントでは入力前の値を保持していません
わかっていませんでした(恥)大変勉強になりました。

 >シート保護をかけておいて、入力済みにはロックをかけ
 >修正のためにはシート保護を外す
 >ような仕組みで代替できないでしょうか。
 仕切り直しが必要なようです。
 ご教示有難うございました。
 (くば)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.