• ベストアンサー

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

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

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

  • ベストアンサー
回答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