やりたいことが難しそうなので、できないかもしれませんが、
もしかしたらと思い投稿しました。
まず、エクセルファイル「book1.xls」「book2.xls」「マスター.xls」
を用意します。
どのファイルにもA1~A5に東京、神奈川、千葉、埼玉、茨城と
入力したとします。このA1~A5に都道府県という名前を付けます。
B1にはドロップダウンリストをつくり、都道府県と名づけたセルの内容
が選択できるようにします。
   A    B
1 東京 ドロップダウンリスト
2 神奈川
3 千葉
4 埼玉
5 茨城
ここで「マスター.xls」のA6に栃木と入力し、A1~A6の名前を都道府県
に変更したとします。この時B1のリストの項目は5から6に増えています。
私がやりたいのは、上記のように「マスター.xls」を変更したとき、
「book1.xls」「book2.xls」にも自動的に同様の変更がおこるように
したいのです。
ファイルが3つだったら1つずつ直せばよいですが、実際に私がやろう
としているのは50個くらいあるので、1つずつ直すのは手間がかかり
ます。そこで、1つのファイルのドロップダウンリストの項目を変更
すると他のファイルも同様に変更が加わるような仕組みをつくりたい
のです。
どのような方法でもかまいませんが、マクロを使うなら、
入力すべきコードを正確に教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>「マスター.xls」を変更したとき、「book1.xls」「book2.xls」にも自動的に同様の変更がおこる...


ではなく、「book1.xls」「book2.xls」を開いた時に「マスター.xls」の最新データを取り込む、
でいいんじゃないでしょうか。
[外部データの取り込み]を使って、マクロも不要な仕様です。

最初に「book1.xls」「book2.xls」...各ファイルを作成する時に仕込みます。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filte …
ここを参考に、各ファイルに対して、[外部データの取り込み]で「マスター.xls」のマスターシートの
A列だけを取り込む設定をします。

その時、[外部データ範囲のプロパティ]で『ファイルを開くときにデータを更新する』にチェックを入れておけば
各ファイルを開いた時に「マスター.xls」の最新データを取り込む事ができます。

[外部データの取り込み]を設定した範囲はデフォルトで[Excel Files からのクエリ]という名前がつきますから
入力規則のリストに
=Excel_Files_からのクエリ
と設定すれば良いです。
「【エクセルVBA】ドロップダウンリストに」の回答画像1
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qexcel vba でドロップダウンリスト

sheet1のA1セルに、VBAでドロップダウンリストを作ろうとしているが、うまくいかず、どうかアドバイスをお願い致します。

ドロップダウンリストの元のデータは「datalist」というシートののA1セル~A10セルにあります。

参考書を参考にしながら、下記コードを作成しました。


Sub ドロップダウンリストの作成()
Dim r As Variant
For Each r In Range("A1")
r.Validation.Add_
Type:=xlValidateList, _
formula1:="Worksheets("datalist")."=$A$1:$A$10"

Next r
End Sub

Aベストアンサー

たとえばこんな具合に。

sub macro1()
 dim a as variant
 a = application.transpose(worksheets("datalist").range("A1:A10"))

 with worksheets("シート名").range("A1").validation
  .delete
  .add type:=xlvalidatelist, formula1:=join(a, ",")
 end with
end sub


#入力規則のリストのネタに他のシートのセル範囲を使うのは,マクロ以前に手動で行ってみてもふつーの(ご質問のマクロでやってみようとしたような)やり方では出来ません。

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Qエクセルで他のBookのデータを入力規則のリストに…

エクセル(Excel2002)の入力規則についての質問です。
仮にBook1のsheet1のA列1~10行に元の値となるデータを作成し,これに「データ」と名前をつけます。
このデータをBook1とは異なるBook2のA列1行において入力規則の元のデータに設定しドロップダウンリストから選択することは可能でしょうか?
Book1とBook2は同一フォルダにあります。
ご教示ください。

Aベストアンサー

#5 です。

バグ発見です。すみません。

#5 のコードを次のように訂正します。

(誤)
  'データ範囲の名前をチェック
  Set rngDat = WB.Names("データ").RefersToRange

(正)
  'データ範囲の名前をチェック
  Set rngDat = WB.Names(DatRangName).RefersToRange

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QEXCELで他のファイルデータをドロップダウンさせるには?

EXCELでファイルAのデータをファイルBのセルでドロップダウンさせるにはどうしたらよいでしょうか?

例えば、ファイルAには受注データが入力されていて、受注品目のセル範囲を指定したファイルデータを利用して、ファイルBにドロップダウンによるリストの入力をしたいのですが教えてください。

ブック内での他シートからのリスト作成はわかるのですが・・・

Aベストアンサー

こんにちは。

以下、的外れだった場合はすみません。

「名前」の定義を利用すれば可能だと思います。

以下は設定の一例です。
※下記は、Excel2000での操作例です。他のバージョンのExcelで操作が
 異なる場合は、同機能の操作に置き換えて下さい。

■Excelブックの構成
 各Excelブックが下記の構成だったとします。

1)ExcelブックA
  ・データが参照される側のExcelブック
  ・ファイル名は、"BookA.xls" とします。

 <シート1の構成>
  シート名="Sheet1"

       A
  1  品目名
  2  かぼちゃ
  3  じゃがいも
  4  とうもろこし
  5  だいこん
  6  にんじん

2)ExcelブックB
  ・データを参照する側のExcelブック
  ・ファイル名は、"BookB.xls" とします。

 <シート1の構成>
  シート名="Sheet1"

       A
  1  品目選択
  2  XXXXX  ←このセルに下記の[入力規則]の設定を行います。

■名前の定義、入力規則の設定
 上記のExcelブックの構成で、ドロップダウンリスト(=入力規則)を設けたい
 ブック側(今回の場合は、"BookB.xls")で、下記のような<名前の定義>
 及び、<入力規則の設定>を行います。

 注)下記の設定は、リストデータを参照する側のExcelブックに設定します。

 <名前の定義>
 1)メニュー : [挿入] → [名前] → [定義]
 2)「名前の定義」のダイアログ操作
    名前    : 品目リスト  ←ここで任意の名前を入力します。
    参照範囲 : =[BookA.xls]Sheet1!$A$2:$A$6

    ※「名前」には、任意の名前を入力します。
    ※「参照範囲」には、"="に続けて参照する他ブックのセル範囲を指定します。
      上記の場合は、
        Excelブック : BookA.xls
        シート名  : Sheet1
        セル範囲  : $A$2:$A$6 (絶対参照のため、"$"を付けています)
      の指定となります。
 3)2)の操作後、[追加]ボタン(または[OK]ボタン)をクリックして「名前」の
  登録を行います。

 <入力規則の設定>
 1)入力規則を設定するセル(今回の場合は、A2セル)を選択します。
 2)メニュー : [データ] → [入力規則]
 3)「データの入力規則」のダイアログ操作
  ・「設定」タブの操作
    入力値の種類 : リスト
    元の値      : =品目リスト  ←ここで名前を指定します。
    ドロップダウンリストから選択する : チェックマークをONにする

    ※「元の値」には、"="に続けて、上記の<名前の定義>で設定した
     「名前」を入力します。
 4)3)の操作後、[OK]ボタンをクリックします。

上記の設定後、2つのExcelブック("BookA.xls"、"BookB,xls")を開いておき、
"BookB.xls"のシート"Sheet1"のセル"A2"をクリックすれば、リストデータ
("BookA.xls"のシート"Sheet1"のセル範囲"A2:A6")が、ドロップダウンで
表示されると思います。
注)データを参照する側のブック("BookB.xls")のみ開いただけでは、ドロップ
  ダウンリストは表示されません。

※添付画像は、上記設定を行ったExcelブックのキャプチャ画像です。

なお、上記の方法は下記サイトの内容を参考にさせて頂きました。

■参考サイト
Excel ドロップダウンリストの設定方法 別ブック参照の場合
http://plaza.rakuten.co.jp/pasodairy/diary/200506030000/

以上です。参考になれば幸いです。

こんにちは。

以下、的外れだった場合はすみません。

「名前」の定義を利用すれば可能だと思います。

以下は設定の一例です。
※下記は、Excel2000での操作例です。他のバージョンのExcelで操作が
 異なる場合は、同機能の操作に置き換えて下さい。

■Excelブックの構成
 各Excelブックが下記の構成だったとします。

1)ExcelブックA
  ・データが参照される側のExcelブック
  ・ファイル名は、"BookA.xls" とします。

 <シート1の構成>
  シート名="Sheet1"

      ...続きを読む


人気Q&Aランキング