- ベストアンサー
VBAで入力規則のリスト参照元の値取得
- VBAを使用してエクセル2007で入力規則のリスト参照元の値を取得する方法について教えてください。
- VBAを使ってエクセル2007で入力規則のリストの元の値を取得する方法を教えてください。
- エクセル2007のVBAで入力規則のリストの元の値を取得する方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
カンタンのためエラー処理は省略します つまり ●マクロ作動時アクティブセルに「入力規則のリスト」の「元の値」を「=何某の名前」で設定済みである ●「何某の名前」は縦方向(たとえばシート3のA1:A6)に設定済みである ●variant型の配列に格納する sub macro1() dim a as variant, ax as variant a = application.transpose(names(mid(activecell.validation.formula1, 2)).referstorange.value) ' for each ax in a ' debug.print ax ' next end sub
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1734/2604)
> どのリストを参照しているかを調べるということは可能なのでしょうか? たとえばC8なら(画像でC8で入力規則してるように見えるので) Mid(Range("C8").Validation.Formula1, 2) で設定した「元の値」から=以降の値が取得できます。
お礼
追加のご回答をいただきありがとうございます!
- kkkkkm
- ベストアンサー率66% (1734/2604)
選択言語で名前つけしたセルのデータを取得したいということですよね。 以下でいかがでしょう。 Sub Example() Dim ListData() As String Dim c As Range Dim i As Integer i = 1 ReDim ListData(i) For Each c In Range("選択言語") ListData(i) = c.Value i = i + 1 ReDim Preserve ListData(i) Next c End Sub
補足
ありがとうございます。 ちなみにリストがいくつかあって、それぞれ参照するリストの名前が異なる場合、どのリストを参照しているかを調べるということは可能なのでしょうか? (先ほどの例だと、入力規則で「選択言語」という名前づけをされたセルが設定されているということをVBAで知る方法はないでしょうか?)
- imogasi
- ベストアンサー率27% (4737/17069)
質問が、ごちゃごちゃしていてよく読む気がしない。画像もぼやけている。 もし下記で、質問者のニーズに応用できるなら使ってみて。 ーー A1:A10の各セルに入力規則の「リスト」を設定していて リストはE3:E8の値 a b c d e f を使っているとする。 ーー Sub Sample2() a = Range("A2:A10").Validation.Formula1 MsgBox a For Each cl In Range(a) MsgBox cl Next End Sub これでMsgbox のところでa,b,c,・・fが都度表示されるから、好きなように料理して(組み立てるなりして)。 Range("A2:A10").のところは、その範囲内の1セル指定でも同じやり方だろう。
お礼
スマートな書き方になってなくてすみません。 やり方を教えていただきありがとうございます。
お礼
ありがとうございます!