• 締切済み

Excelで、シート2の値をシート1のリストに表示することは可能でしょうか?

Excelで(シート1の)セルに入力する値をリストで表示したいのですが、そのリストに載せる候補を別シート(シート2など)から呼び出すことはできるのでしょうか? 具体的には別シートに商品名が記された表を作って、その表には随時商品名を追加できるようにしてあります。 商品が追加された際には、リストの候補にもその新しい商品名が追加されるといったようなつくりにしたいのですが、それをプログラムで作ることは可能でしょうか? もしくは商品を入力するセルに商品名を入力した際に、別シートにある表にその商品名が掲載されていない場合、その入力をはじくといったプログラムを作ることは可能なのでしょうか? 質問の仕方に至らない点があるかとも思いますが、わかる方がいらっしゃれば是非お願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

VBAが念頭にあるらしいが、操作でできます。 例でせつめいします。 Sheet2のD1:D5に(どこでも良い) 番号 1 2 3 4 D1:D10を範囲指定して 挿入ー名前ー作成ー上端行にチェックしてOK ーー これでSheet1で、名前ボックスの▼をクリックすると 「番号」が出てきて、選択すると、Sheet2のD1:D10 が範囲指定される。 これでSheet1でも「番号」という名前が使えることがわかる。 Sheet1のA1:A20を範囲指定して データー入力規則ーリストー=番号(=が必要) これでSheet1のA1を選択して、▼をクリックすると1,2、3,4が出てくる。 ーーー Sheet2のD6:D7に、5,6を追加する。 Sheet1に戻って、これでSheet1の(例えば)A7を選択して、▼をクリックすると1,2、3,4、5,6が出てくる。 5,6の追加が即時反映される。 Sheet2のD列の(例えば)4を削除すると、しぇえt1のA列でのリストに、以後は4は出なくなる。 ーーー 当初D1:D9を範囲指定して、名前を定義したので、9の行の次ぎ以下の数を入れても、リストに反映しない。 追加数を考え余裕行数を考えて範囲指定すること。 ーー 以上をマクロの記録を取れば、VBA化する。 Name.Add や Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=番号" などが出てくる。 それでも修正が必要な箇所があり判らなければ、質問してください。

  • miyuyu
  • ベストアンサー率61% (30/49)
回答No.1

こちらに投稿さえているということは なんとしてもプログラムで入力制限したいのでしょうか。 メニュー[データ][入力規則]-「設定」タブ 入力値の種類-リスト では嫌ですか? リストの範囲はセルを選択したときA1とか表示される部分で命名した名前を設定します。 例:Sheet2のA列を選択した状態でA_LISTと直接入 Shhet1に戻り、メニュー~リストでA_LIST設定

関連するQ&A