• ベストアンサー

EXCEL VBAで、EXCELの入力規則でリストに設定された内容をすべて取得したい

EXCEL2003を使っています。 EXCELシートのあるセルに対し、入力規則が以下のように設定されています。 ・入力値の種類:「リスト」 ・データ:複数の値を直接設定(「りんご,みかん,もも」のような形式) このとき、リストに設定されているすべての値をVBAで取得したいと思っています。 入力規則で設定されている内容を取得する方法をご存知の方、ご教示いただけますでしょうか。 そもそも入力規則で設定されている内容を取得することは可能なのでしょうか。 よろしくお願いいたします。

  • kaoch
  • お礼率37% (6/16)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

RangeオブジェクトのValidationプロパティより取得できます。 入力規則がないセルが指定されるとエラーになってしまうので、On Error~を記述してあります。 On Error Resume Next With Range("A1").Validation   If .Type = xlValidateList Then     MsgBox .Formula1   End If End With On Error GoTo 0

kaoch
質問者

お礼

早速のご回答ありがとうございました。 期待する結果を得ることができました。 ありがとうございました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

RangeオブジェクトのValidationプロパティから取得できると思います Sub Test   dim r as Range, t as range   dim v as Validation   ' シートの記入済み等のセルを取得   set r = ActiveSheet.UsedRange   ' セルを個別に処理   for each t in r     ' 入力規則を取得     set v = t.validation     dim ss as String     ss = ""     ' 設定されて無い場合のエラートラップ     on error resume next     ' 入力規則がリストなら     if v.type = xlValidateList then       ' 設定値を取得       ss = v.fomula1       if ss<>"" then         ' インディエイトに表示         Debug.Print ss       end if     end if     on error goto 0   next End Sub といった具合でどうでしょう

kaoch
質問者

お礼

早速のご回答ありがとうございました。 記述していただいたソースを試してみましたが、「424 オブジェクトが必要です」の実行時エラーが発生してしまいました。 原因を調べたところ、対象とするシート内の入力規則設定内容取得対象のセルは、値が何も選択されていない状態のため、UsedRangeプロパティでは値の指定が必要なこともわかりました。 ご回答いただいたロジックも今後参考にさせていただきます。

関連するQ&A

  • VBAで入力規則のリスト参照元の値取得

    エクセル2007を使っています。 VBAツールを作っており、その処理で使われる一機能として 「任意のセルに設定されている入力規則のリストの元の値をVBAで取得する」処理を コード中に書きたいと思っております。 ■質問概要  「入力規則のリスト」が設定されている任意のセルを選択したときに、そのセルに設定されている  「入力規則のリスト」の「元の値」をVBAで取得する方法について教えてください。  ※取得した値は配列型の変数に代入するものとします ■想定イメージ  たとえば、次のようなブックで使うことを想定しております(画像参照)  ※実際はもっとデータ量が多いブックで使う予定です  ・「リスト元の値」というシートで「選択言語」という名前でリストを定義化  ・「通常操作するシート」では値を入力したいセルに対し、「入力規則のリスト」の「元の値」を   「=選択言語」で設定  VBAではこの「通常操作するシート」の入力欄のセルを選択している時に「選択言語」で定義されている  データをすべて取得し配列型変数に代入するという動作をさせたいと思っています。     この方法について教えてくださいますようお願いします。

  • VBA 入力規則を使用したリストについて

    【動作環境】  Excel2010/Excel2000   あるセルについて、 入力規則のリストを使っています。 ユーザには範囲外の値を入力させたくなく、 手入力を禁止するためにそのセルはロックし、シートを保護しています。 これをExcel2010で実行させた場合、 リストから候補値を選択すると、 セルがロックされている旨のメッセージが表示され、 セルには何も設定されません。 まったく同じことを Excel2000で行うと問題なくリストで選択した値がセルに設定されます。 今回、Excel2000とExcel2010で動作するVBAが要求されており、 どのように回避すればよいか、ご教授願います。

  • excelの入力規則リストで重複不可にするには

    エクセルの入力規則でリストを利用して【プルダウンメニュー】を作成しています。 リストのデータを重複して選択できないようにするにはど のようにすればいいでしょうか? 例をあげるとしして 仮にA、b、Cの3つのセルに入力規則のリストを設定していずれも元の値が 『リンゴ』『みかん』『バナナ』とした場合。 Aのセルでリンゴを選択した時BやCのセルでリンゴを選択できないようにするに します。 VBAは全く分からないのでできれば関数で やる方法をご教授頂ければと思います。 宜しくお願いします

  • EXCELの入力規則のリストについて。その1(重複セル)

    Excel2000で入力規則のリストを設定しようとしています。 リストの元になる範囲のデータには重複するものがあります。 その重複するものを各1つずつリストに表示させることはできるでしょうか? 例 みかん   みかん りんご → りんご みかん   ぶどう ぶどう VBAは苦手なので、元になる範囲から関数などで別な場所に重複しない表を作り、それをリストに使用する方法でもいいなと思っています。 元になる範囲が変更される度に、更新や修正をしないでよい方法があれば助かるのですが。 どうかよろしくお願いします。 もう1つ「EXCELの入力規則のリストについて。その2(IFで空白にしたセル)」という質問もしておりますので、何卒そちらもよろしくお願いします。

  • エクセルVBAで入力規則の有無を取得

    エクセル2010です。 VBAで特定のセル、たとえばA1セルに入力規則が設定されているかどうか取得したいのです。 セルにVBAで設定することはできるのですが、すでに設定されているかどうかを取得できずに困っています。 ご教示いただければ幸いです。

  • エクセルの入力規則について

    エクセルの入力規則機能について質問があります。 入力値の種類をリストに設定されていて、元の値には”=項目”と記載されています。 項目は別のシートのリストをさしているようで、セルをポップアップするとその別シートの セルの内容が選択できるようになっています。別のシートのリストの項目を削除すると セルをポップアップするとその項目だけ選択できなくなります。 このような機能(”=項目”の定義の仕方)について、どのように設定すればよいか教え て下さい。 よろしくお願いいたします。

  • エクセルの入力規則 リスト

    お世話になります。 入力規則でリストで選択し、その選択した値によって動的に次の入力リストの中身の変更を行いたいのですが上手く記述できないのでお願いします。 具体的に言いますと シート2を値を管理するシートとし、シート1を用意し シート2に アルファベットリスト(中身:A,B,C,D) Aリスト(中身:あ,い,う,え,お) Bリスト(中身:か,き,く,け,こ) Cリスト(中身:さ,し,す,せ,そ) Dリスト(中身:た,ち,つ,て,と) と命名したセルを用意します。 シート1のA列でアルファベットリストを入力規則のリストで呼べるようにします。 ここまでは出来るのですが シート1のA列でCを選択した場合B列ではCリストの「さ、し、す、せ、そ」を選択できるようにしたいのです。 Aであれば「あいうえお」Bであれば「かきくけこ」と絞りたいのですが上手くできないのです。 質問の内容がわからない場合申し訳ありません、質問頂ければお答えしますので宜しくお願い致します。

  • Excelの入力規則でリストの値を選択できません。

    Excelの入力規則でリストの値を選択できません。 環境:WinXP Excel2003 表内のセルに入力規則でリストを設定しました。 リストは場所指定ではなく、入力規則タブのリスト欄にカンマで区切って直接値を入力しています。 リストの内容はメールアドレス用のドメインです。 ("@docomo.ne.jp,@softbank.ne.jp"というふうにドメインをリストにしています) 表は下記のような作りになっています。 A1セル:アカウント 直接入力 A2セル:ドメイン ドロップダウンリストから選択 ドロップダウンリストは正常に表示されるのですが、値を選択してもセルには何も表示されません。 試しにリストの値を"a,b,c"に変更したら正常に選択・表示されました。 ※添付画像のような状態から値を選択してもセルには何も表示されません 値が選択できないのは何が原因でしょうか? ご教示宜しくお願い致します。

  • エクセル 入力規則について

    データの入力規則でリストを選んだときの”元の値”についてですが、同一シート内のどこかを選ぶと間違ってその元の値を消したりする危険性があるので、別のシートに元の値を書いておきたいのですが、そういうことは出来ないのでしょうか? また、VBAのコード上からリストを作成することは出来ないのでしょうか?

  • 入力規則のリストボックス

    エクセルの入力規則でリストボックスを使って選択したいのですが その時に、数字のみを抽出する方法はないですか? 例えば 1:りんご 2:みかん 3:バナナ をリストから選択する時、番号のみが表示されるように したいのです。 リストにはその番号がどれに該当するかわかるように りんご、みかん、バナナという内容も表示させたいのです。 よろしくお願いします。

専門家に質問してみよう