[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォームコントロール』(まる)
エクセルのシート上にフォームコントロールでリストボックスを2つ作成し、1つは県名のリストを参照させています。 もう一つには市町村名をと考えています。 県名の選択値が変わるたびに市長村名リストが変わるようにしたいのです。 県名と同じ名前で名前の定義をしました。 県名のリンクするセルの下段AB1に=index(県名リスト,リンクするセル)としています。 入力規則だと=indirect(AB1)とすれば言い訳ですが、リストボックスの場合入力範囲に どのように記述すれば良いでしょう? 教えてください。
リストボックスの名前が、リスト1、リスト2であるとします。
(1) 当該シートの「シート見出」しを右クリックして「コードの表示」を選択→VBEが開く (2) 画面中央の白いところに下記コードをコピペ (3) VBE画面ウィンドウを閉じる
(4) エクセルに戻ったら、リスト1を右クリックして、「マクロの登録」を選択 (5) マクロ名として「リスト変更」を選んで「OK」ボタンクリック
以上の準備作業が終わったら、リスト1で県名を選んでみてください。
’貼り付けるマクローコード
Sub リスト変更() Me.Shapes("List Box 2").ControlFormat.ListFillRange = Range("AB1").Value End Sub
(半平太) 2010/11/29 17:30
まる
マクロじゃなくても出来ますが、 関連データが現実にどうなっているのかチャンと ご説明いただかないと、具体案は示しにくいです。
(半平太) 2010/11/29 19:20
Sheet1、Sheet2というシート名がある新規ブックにて・・・。
データ配置編
例として、Sheet2に以下のようにリストボックスのデータを配置します。
Sheet2
A B C D E 1 東京都 台東区 甲府市 静岡市 2 山梨県 足立区 甲斐市 富士宮市 3 静岡県 墨田区 笛吹市 浜松市 4 江東区 韮崎市 沼津市 5 世田谷区 山梨市 熱海市 6 新宿区 甲州市 三島市 7 杉並区 大月市 伊東市 8 大田区 都留市 島田市 9 渋谷区 富士吉田市 富士市 10 北杜市 磐田市 11 焼津市 12 掛川市 13 藤枝市 14 御殿場市
以上です。尚、B列は空けて置いてください。 例のように セルA1から、A列に県名を入力します。 C列の1行目から、A列の県名に合わせて市町村名を入力します。
A列1行目の県名に対する市町村名をC列に入力 A列2行目の県名に対する市町村名をD列に入力 A列3行目の県名に対する市町村名をE列に入力 ・ ・
名前の定義編
名前の定義で以下のように定義してください。
名前
県
参照範囲
=OFFSET(Sheet2!$A$1,0,0,COUNTA(Sheet2!$A:$A),1)
名前
市町村
参照範囲
=OFFSET(Sheet2!$B$1,0,Sheet2!$B$1,COUNTA(OFFSET(Sheet2!$B:$B,0,Sheet2!$B$1)),1)
上記の二つの名前(県、市町村)を指定参照範囲で定義してください。
リストボックス作成編
Sheet1にフォームコントロールのリストボックスを2つ作成してください。
一つの目のリストボックス 県名リスト用
コントロールの書式設定のコントロールタブにて
入力範囲に 県 と既に定義された名前を指定してください。
リンクするセルに Sheet2!$B$1 とSheet2のセルB1を指定してください。
二つ目のリストボックス 市町村リスト用
コントロールの書式設定のコントロールタブにて
入力範囲に 市町村 と既に定義された名前を指定してください。
設定は以上です。
県名リスト用のリストボックスで適当な都道府県を選択してください。 その都道府県の市町村が 市町村リスト用のリストボックスに表示されるはずです。
試してみてください。
ichinose
すみません。 すっかりINDIRECTは使えないものと思いこんでいました。
名前定義して(ichinoseさんの案だと「県」) 参照範囲に =INDIRECT(Sheet1!$AB$1)
とすればいけました。(XL2007で確認)
※ ただし、リストの長さを自動調節することは出来ません。 ichinoseさんの案は、自動調節になっております。
(半平太) 2010/11/30 08:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.