- ベストアンサー
EXCEL VBAで、EXCELの入力規則でリストに設定された内容をすべて取得したい
- みんなの回答 (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
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
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 といった具合でどうでしょう
お礼
早速のご回答ありがとうございました。 記述していただいたソースを試してみましたが、「424 オブジェクトが必要です」の実行時エラーが発生してしまいました。 原因を調べたところ、対象とするシート内の入力規則設定内容取得対象のセルは、値が何も選択されていない状態のため、UsedRangeプロパティでは値の指定が必要なこともわかりました。 ご回答いただいたロジックも今後参考にさせていただきます。
お礼
早速のご回答ありがとうございました。 期待する結果を得ることができました。 ありがとうございました。