これ何て呼びますか Part2

EXCEL2003を使っています。
EXCELシートのあるセルに対し、入力規則が以下のように設定されています。

・入力値の種類:「リスト」
・データ:複数の値を直接設定(「りんご,みかん,もも」のような形式)

このとき、リストに設定されているすべての値をVBAで取得したいと思っています。
入力規則で設定されている内容を取得する方法をご存知の方、ご教示いただけますでしょうか。
そもそも入力規則で設定されている内容を取得することは可能なのでしょうか。

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

「EXCEL VBAで、EXCELの入力規」の質問画像

A 回答 (2件)

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
    • good
    • 3
この回答へのお礼

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

お礼日時:2009/04/16 09:48

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

といった具合でどうでしょう
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/04/16 09:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A