- ベストアンサー
EXCEL 入力規則のリストについて教えてください
EXCELの入力規則でリストを作っています。 以前、こちらで別なシートにある一覧をリストの元データにする方法を教えていただいたのですが、元データが別なブックにある場合はどうでしょうか? EXCEL2000、XP、2003を使っています。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VBAといってもマクロの記録程度ですがやって見ました。 下記はブックaaa14のSheet3のA列をリストのアイテムに 出来ました。 ただ下記ではWorkbooks("aaa14.xls")は実行時に既に開いておく必要があります(#2ご回答と類似)。 下記Book1は保存前の状態です。 aaa14を変更した場合は上書き保存をした後に再実行する必要があります。 aaa14やその列、入力規則を設定する列を相対化(その都度 指定させる)する課題はありますが、省略。 リストのアイテムを、他ブックを参照して、文字列として作成している、と言うことがミソです。Formula1:=sが可能であったことだけでも、小生は小満足してます。 Sub Macro1() s = "" d = Workbooks("aaa14.xls").Worksheets("Sheet3").Range("a65536").End(xlUp).Row For i = 1 To d s = s & Workbooks("aaa14.xls").Worksheets("Sheet3").Cells(i, "A") & "," Next i MsgBox s Windows("Book1").Activate Range("A1:A10").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=s End With End Sub
その他の回答 (2)
- hakone
- ベストアンサー率54% (40/73)
一応できないわけではありません。 同じブック内の別シートを使用する場合と同じように 別ブックの範囲について名前を定義します。 例えば、 Book1のA1:A4をBook2でリストとして使用したい場合: Book2.xlsで[挿入][名前][定義]とし、 Book1.xlsのA1:A4の範囲に名前を付けます。 「名前」 list 「参照範囲」 =[Book1.xls]Sheet1!$A$1:$A$4 このような名前を、リストの元の値に使用すれば、 別ブックの範囲を入力規則に使用できます。 ただし、 その入力規則を使用する場合は、リストのあるBook1.xlsを 開いていないとBook2.xlsで使用することができません。 従って、#1さんのおっしゃる通りリストの範囲を、 使用したいブックにリンク貼り付けしておく方が便利 なのです。
お礼
ありがとうございます。 早速、説明のとおりにやってみました。 なのですが、私はどこか手順を間違えてしまったようで…。 Book2でBook1の名前を定義するところまではうまくゆきました。(と思います) なのですが、リストの「元の値」に「挿入」→「名前」→「貼り付け」→listとし、入力規則のダイアログボックスで「OK」をクリックしたところで「抽出条件データの入力規則で、他のワークシートまたは他のブックへの参照は使用しません。」というエラーが出てしまいました。 私のへたくそな説明でわかりにくいと思いますが、間違い箇所を教えていただけないでしょうか? よろしくお願いします。
- sero
- ベストアンサー率47% (916/1944)
別ブックのリストを直接入力規則の元リストに設定する事は出来ません。 ブック内のシートにリストにしたい別ブックの範囲をリンク貼り付けし、 その部分を元リストとする事は可能です。
お礼
やはりダメですか。 ありがとうございます。 リンクさせてやってみます。
お礼
どうもありがとうございます。 難しそうですが、挑戦してみます。