[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リストボックス』(LT)
A1からA3にデータがあり、A列と名前を定義しています。
B1からB3にデータがあり、B列と名前を定義しています。
C1に入力規則のリストで=A列としております。
D1に入力規則のリストで=B列としたいのですが
C1にデータが入力されていないと、エラーとなり
入力ができないようにできますでしょうか?
< 使用 Excel:Excel2013、使用 OS:Windows7 >
エラーにはならないが。 まずC1セルに値を入力した状態でD1セルに入力規則のリストで元の値に =IF(C1="","",B列) と指定してみてくれ。 (ねむねむ) 2018/03/13(火) 13:09
あるいはどこかのセルに「エラー」と入力しておいて(例えばE1セル) =IF(C1="",E1,B列) でも。 (ねむねむ) 2018/03/13(火) 13:20
ありがとうございます。
これでエラーメッセージがでるといいのですが
無理でしょうか?
(LT) 2018/03/13(火) 13:35
どのタイミングでエラーにしたいのだろうか? (ねむねむ) 2018/03/13(火) 13:36
セルを選択した時の矢印を押した時がいいです。
宜しくお願い致します。
(LT) 2018/03/13(火) 15:21
(ねむねむ) 2018/03/13(火) 13:20 この方法は? もし、エラーダイアログを出したいということであれば私にはちょっと思いつかない。
(ねむねむ) 2018/03/13(火) 15:26
=IF(Sheet1!$C$1<>0,Sheet1!B1,"")
と入力して下までコピー
D1のデータ入力規制で
=Sheet2!$A:$A
としておけばリストボタンを押しても空欄しか表示されず
なにか直接入力してもエラーがでます。
空白を返しているところを例えば"C1が未入力です"にかえれば
リストボタンを押したときに「C1が未入力です」がいっぱい表示させることはできると思います。
リストボタンを押したときにエラーを返す方法はわかりませんでした。
(くまお) 2018/03/13(火) 15:37
ありがとうございます。
こんな方法もあるのですね!
しかし、できればエラーメッセージが
でるようにしたいのでが無理なのでしょうか?
VBAでもいいのですが、さっぱりわかりません。
どなたかお願いいたします。
(LT) 2018/03/13(火) 15:55
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$D$1" Then Exit Sub
If Target.Value <> "" Then If Target.Offset(0, -1).Value = "" Then Application.EnableEvents = False Target.Value = "" Application.EnableEvents = True MsgBox "C1セルを先に指定してください", vbCritical, "エラー" End If End If End Sub
これで、D1セル選択した際に、C1セルが空欄ならエラー表示し、D1セルを空欄に戻します。(入力できないようにというのは、シートのロックでも活用しないと難しいので、入力後に消す方法にしています)
ただ、片手落ちだなぁ、と思うのが、C1セルとD1セル両方を選択した後、C1セルをDELキーで消しても、D1セルは選択が残ったままなんですよね。 それでも構わなければ、試してみてください。
(???) 2018/03/13(火) 16:19
ありがとうございます。
かなり、やりたいことに近づいてまいりました。
D2以降にも反映するには
どこを、書きかえれば良いのでしょうか?
(LT) 2018/03/13(火) 16:59
とりえずは、以下のように1セルだけとD列だけを条件に変えます。行にも制限があるならば、それはご自身で追加してみてください。Intersectメソッドによる範囲指定判定もよく使われます。 そして、エラーメッセージの対象セルアドレスが行によって変わってくるので、そこも直しています。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Target.Column <> 4 Then Exit Sub
If Target.Value <> "" Then If Target.Offset(0, -1).Value = "" Then Application.EnableEvents = False Target.Value = "" Application.EnableEvents = True MsgBox Target.Offset(0, -1).Address(0, 0) & "セルを先に指定してください", vbCritical, "エラー" End If End If End Sub (???) 2018/03/13(火) 17:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.