やりたいことが難しそうなので、できないかもしれませんが、
もしかしたらと思い投稿しました。
まず、エクセルファイル「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と関連する良く見られている質問

Qドロップダウンリストボックスの作り方?

Excelワークシートで棚卸管理表を作成しようと思っているのですが、
条件毎に一発で目的別に整理した表を表示できるように、
ドロップダウンリストボックスを一ヵ所のセルに取り入れて作りたいのです。

例えばのドロップダウンリストには
1.棚卸対象商品の確認順路
2.フロア(倉庫)別
3.商品登録コード順
4.仕入れ先別
5.使う部署別
6.商品のABC…あいう…順

これらのリストを選択し、クリックすることで
一発で目的の表に表示されるようにしたいのですが、
作り方がわかりません。
作り方がわかるサイト等知っている方いましたら、
教えてください。

よろしくお願いします。

Aベストアンサー

Sheet1の(例えば)J1:J10に
棚卸対象商品の確認順路
フロア(倉庫)別
商品登録コード順
仕入れ先別
使う部署別
商品A
商品B
・・・
が入っているとする。
Sheet1の(例えば)C2セルでデータ-入力規則-リスト-
元の値を$J$1:$J$10
Sheet1のChangeイベント(注)に
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
sn = Target
Sheets(sn).Select
End If
End Sub
をコピペする。
(注)ツール-マクロ-VBEの画面で
VBAProjectのSheet1をダブルクリックするとVBAのイベントを記述できる画面になるから、左上Generalの▼をクリックしてWorksheet、右上のDeclarationの▼をクリックして
Changeを選ぶと
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
になる。
シート名は、J1:J10にあるものは、実際に1字1句違わないシートがあること。

Sheet1の(例えば)J1:J10に
棚卸対象商品の確認順路
フロア(倉庫)別
商品登録コード順
仕入れ先別
使う部署別
商品A
商品B
・・・
が入っているとする。
Sheet1の(例えば)C2セルでデータ-入力規則-リスト-
元の値を$J$1:$J$10
Sheet1のChangeイベント(注)に
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$2" Then
sn = Target
Sheets(sn).Select
End If
End Sub
をコピペする。
(注)ツール-マクロ-VBEの画面で
VBAProjectのSheet1をダブルク...続きを読む

Q1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある

1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある場合、
すべてのファイルに一斉にA1セルに「a」という文字を反映させる場合の
VBAプログラムを教えていただけますでしょうか?
よろしくお願いいたします。

Aベストアンサー

フォルダ名を変更してから試してね
4行目の
mPath = "C:\tmp\"
「aaa」なら
mPath = "C:\aaa\"
に変更


Sub test()
Dim mPath As String
Dim nf As String
mPath = "C:\tmp\"
nf = Dir(mPath & ".xls")
Do While nf <> ""
Workbooks.Open Filename:=mPath & nf
Workbooks(nf).ActiveSheet.Range("a1").Value = "a"
Workbooks(nf).Close SaveChanges:=False
nf = Dir()
Loop
End Sub

簡単なコードにしてあるので、分らない所はヘルプで調べてね
参考まで

QExcelでドロップダウンリストの作り方

初心者です。
現在、多くの画像を貼り付けたカタログを作っています。そこで、画像を挿入して配置するところまではマクロでできるようになりました。
マクロは指定したセルに番号を入れたら画像が配置されるといったFindを使ったマクロにしています。この画像が3000種類ほどあって、1ページあたり60枚を貼り付けています。ですので、1ページは1~60番の画像、2ページは61~120番の画像といったふうにしたいと思っています。

現在は番号を指定したセルに配置されるように別のマクロも作っています。
Sub 画像1から60()
Range("A4").Select
ActiveCell.FormulaR1C1 = "1"
Range("C4").Select
ActiveCell.FormulaR1C1 = "2"
・・・
ここで、ドロップダウンリスト(ユーザーフォーム?)で1~60番、61~120番、121~180番といった項目がでてきて、それをクリックしたら上で作ったマクロで番号を配置させるということをしたいと考えています。
説明が下手で申し訳ないですが、わかる方教えてください。

初心者です。
現在、多くの画像を貼り付けたカタログを作っています。そこで、画像を挿入して配置するところまではマクロでできるようになりました。
マクロは指定したセルに番号を入れたら画像が配置されるといったFindを使ったマクロにしています。この画像が3000種類ほどあって、1ページあたり60枚を貼り付けています。ですので、1ページは1~60番の画像、2ページは61~120番の画像といったふうにしたいと思っています。

現在は番号を指定したセルに配置されるように別のマクロも作っています。
Sub 画...続きを読む

Aベストアンサー

#2です。

条件によって複数分岐する場合、個人的には Elseif を使う事は無く Select Case でやる場合が殆どです。
また、条件分岐は分けたい処理のみに特化すればコードを簡素化出来ます。
質問の内容だと #8のサンプルで、ComboBox1_Change の

      sh.ShapeRange.Height = 84
      sh.ShapeRange.Width = 84

      sh.ShapeRange.Height = 84
      If r.Offset(0, 3).Value = "D" Then
        sh.ShapeRange.Width = 52
      Else
        sh.ShapeRange.Width = 84
      End If
または
      sh.ShapeRange.Height = 84
      sh.ShapeRange.Width = 84
      If r.Offset(0, 3).Value = "D" Then sh.ShapeRange.Width = 52

にすれば良いだけに思えますが、、、

専属の回答者じゃないし、元の質問は解決してると思うので、ここでの回答はこれで最後にします。

#2です。

条件によって複数分岐する場合、個人的には Elseif を使う事は無く Select Case でやる場合が殆どです。
また、条件分岐は分けたい処理のみに特化すればコードを簡素化出来ます。
質問の内容だと #8のサンプルで、ComboBox1_Change の

      sh.ShapeRange.Height = 84
      sh.ShapeRange.Width = 84

      sh.ShapeRange.Height = 84
      If r.Offset(0, 3).Value = "D" Then
        sh.ShapeRange.Width = 52
      Else
        ...続きを読む

QBook(.xls)→アドイン(.xla)に関する質問

現在Excelにて、様々なメニューを作成したBook(.xls)があります。これをアドイン(.xla)にしようと思っています。
元Bookの「様々なメニュー」の中に、イベントプロシージャを使用したマクロも登録されていますが、アドイン化した後も使用出来る様にするには、
Private Sub Workbook_AddinInstall()
Private Sub Workbook_AddinUninstall()
にて、どのような記述が必要なんでしょうか?
教えて頂ければと思います。

Aベストアンサー

こんにちは。

どのブックでもShiftキーを押しながら右クリックした場合には
オリジナルのメニューを出したいということですね。
だいたい以下のような感じになります。
↓を.xlaで保存して、アドイン登録して試してみてください。

(ThisWorkbookモジュール)

Option Explicit
Private WithEvents xlApp As Application

Private Sub Workbook_Open()
Set xlApp = Application
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set xlApp = Nothing
End Sub

Private Sub xlApp_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim CB As CommandBar
Dim CT As CommandBarControl
Dim i As Integer

If GetAsyncKeyState(vbKeyShift) <> 0 Then
Cancel = True
On Error Resume Next
Application.CommandBars("MyMenu").Delete
On Error Resume Next
Set CB = Application.CommandBars.Add("MyMenu", msoBarPopup, , True)
For i = 1 To 3
Set CT = CB.Controls.Add(msoControlButton)
With CT
.Style = msoButtonCaption
.Caption = "ボタン" & i
.OnAction = "MACRO1"
End With

Next i
CB.ShowPopup
Set CT = Nothing
Set CB = Nothing
End If
End Sub


(標準モジュール)

Option Explicit
Declare Function GetAsyncKeyState Lib "user32" (ByVal nVirtKey As Long) As Long

Sub MACRO1()
MsgBox CommandBars.ActionControl.Caption & "がクリックされました。"
End Sub

こんにちは。

どのブックでもShiftキーを押しながら右クリックした場合には
オリジナルのメニューを出したいということですね。
だいたい以下のような感じになります。
↓を.xlaで保存して、アドイン登録して試してみてください。

(ThisWorkbookモジュール)

Option Explicit
Private WithEvents xlApp As Application

Private Sub Workbook_Open()
Set xlApp = Application
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set xlApp = Nothing
End Sub

Private Sub xlApp...続きを読む

Qドロップダウンリストの作り方

お世話さまです。

エクセルでセルに入力する文字列を限定するための方法で
セルの右上に"逆三角マーク”ができて、
ここを押すと、あらかじめ定義していたセル内の文字列ができる。

入力が制限できる方法をおしえてください。

Aベストアンサー

[データ]-[入力規則]

http://officetanaka.net/excel/function/tips/list.htm#list01

QVBAでのリストビューにおけるドロップイベント

リストビューにファイルをドロップした場合、適切に処理がされるんですが、不適切なデータ(たとえばブラウザ等で選択した文字列がドロップされた)だと下記のところでデータ形式が一致しないというエラーが出てしまいます。


Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)

With Me
AppActivate Me.Caption
.ListView1.ListItems.Clear
If Data.Files.Count <> 1 Then Exit Sub  ←データの形式が一致しません (Dataに不適切な値が入っている)

不適切なデータが入力された際に処理を実行しないようにするにはどのような手段があるのでしょうか?

ご回答よろしくお願いします。

Aベストアンサー

こちらをご参考に、
Data.GetFormat(15)がTRUEか否かで分岐してはいかがでしょうか。
http://msdn.microsoft.com/en-us/library/aa244109(v=vs.60).aspx

VbCFFilesという定数はVBAにはなさそうなので、使いたければ別途宣言する必要があります。

また、VbCFTextの所に、Text (.txt files)とありますが、テキストファイルのドロップかどうか確認できるという訳ではなさそうでした。
ご参考まで。

Qドロップダウンリストのアイコンの行方

こんにちは。
いつもお世話になっております。

今回、VBにてドロップダウンリストを作成したいと
思っているのですが、ユーザーフォームのアイコン
にドロップダウンリストがなく、困っています。

コンポーネントから追加するのかと考えたのですが、
ドロップダウンリストらしきものが見つかりません。

ドロップダウンリストを使用する方法をご存知の方
がいらっしゃいましたら、教えていただけたらと
思います。

よろしくお願い致します。

Aベストアンサー

Windowsでは、この手のコントロールは「コンボボックス」と言う名前で総称されます。
そして、スタイルの設定により、
「ドロップダウン」「ドロップダウンリスト」「シンプル」と言う
3種類の外見&動作に切り替わります。

で、VBのコントロールもそれに習い、「コンボボックス」と言う名前になっています。

QVBAでドロップダウンリストを連動させたものを作るには?

VBAでドロップダウンリストを連動させたものを作ることが出来ますでしょうか?

今まで入力規則の設定をつかって見ていましたがどうやら実現不可能と思われることが分かってきました。
VBAでの連動したリストの代替案を考えていますが・・・
いい方法は無いでしょうか?

このページのようなことがやりたいと思っています。
http://www.relief.jp/itnote/archives/000822.php

Aベストアンサー

質問内容はありふれたもので、パターン的には判るが、具体的内容が漠然としていて、回答を書くとすると、回答者が実例など全部お膳立てしないとならない。
そこまで回答者にやらすのは、質問者のとる態度ではなかろうと思う。
INDIRECTの例を知りながら、質問者の課題に対しては、できないといっている点は何か、も書いてない。
一般論では
入力者が選択したデータに、
A.選択データの変化に相応するイベントを使う
B.ドロップダウンのアイテムを絞り込む(SQLの実行などが一番よいが、VBAでは使わない場合が多いので、他の方法で検索・抽出する)
の2点が課題と思う。特にデータの階層が複雑な場合は、Bが学習の
課題でしょう。

Qエクセルでドロップダウンリストを…

エクセルでドロップダウンリストを使用する場合の質問です。

あるセルに入力した文字列によって、ドロップダウンリストで選択できる範囲を限定するような設定は可能でしょうか。

例) セルA1に「花」と入力したら 
   セルA2にドロップダウンリストで
   セルE1~E4の「ひまわり、バラ、すみれ、チューリップ」を
   選択できるようにし、
   セルA1に「野菜」と入力したら、
   セルA2にドロップダウンリストで
   セルE5~E8の「トマト、なす、きゅうり、にんじん」を
   選択できるようにする。

初歩的質問ですみませんが、よろしくお願いします。

Aベストアンサー

名前の定義、入力規則、indirect関数を組み合わせることで、

ドロップダウンリストから選択

その選択内容により、次にドロップダウンリストで表示する選択肢を変える

ことは可能です。

下記URLを、参照してみてください。

参考URL:http://www.relief.jp/itnote/archives/000822.php

Qコンボボックスでドロップダウンリストにしたときに・・・・

コンボボックスでドロップダウンリストにしてから実行をすると、最初の項目(一番上)が空白で、その下はリストに書かれてあるように表示されてます。

ドロップダウンしなくても見れるようにするにはどうしたらいのですか?

例: 野菜 ▽    ←ここを表示させたい
   みかん
   かぼちゃ
   りんご
   バナナ

Aベストアンサー

Form_Loadイベントに
Combo1.ListIndex = 0
と書いたら表示されませんか?

以上


人気Q&Aランキング

おすすめ情報