Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
ドロップダウンリスト
投稿日時: 20/12/04 10:16:00
投稿者: アール

VBAでドロップダウンリストを設定したいと考えております。
当初は文字列型の「str」で項目名を設定しておりましたが、255字超えてしまう場合がありExcelが壊れてしまうため、範囲選択したいと考えております。
 
【当初】strはstring型
            '配列数が0でない場合
            If (0 < UBound(項目名)) Then
                ',区切りにする
                str = Join(項目名, ",")
                'プルダウン設定
                Ws.Range("A1").Validation.Add Type:=xlValidateList, Formula1:=str
            End If
【理想】 Formula1:="=B1:B10"の範囲が可変のため変数で設定したいのですが
    どうすれば実装可能でしょうか。(セルの位置はすでにとれております。)
 
      Ws.Range("A1").Validation.Add Type:=xlValidateList, Formula1:="=B1:B10"

回答
投稿日時: 20/12/04 11:26:52
投稿者: Suzu

Rangeオブジェクトが取得できているのであれば、
Rangeオブジェクトの Addressプロパティーを取得すれば良いです。
 
Ex.
  Range("$A$1:$B$10").Address(RowAbsolute:=False,ColumnAbsolute:=False)
   にて、『A1:B10』を得る事ができます。

回答
投稿日時: 20/12/04 14:57:48
投稿者: WinArrow
投稿者のウェブサイトに移動

>:="=B1:B10"の範囲が可変のため変数で設定したいのですが
  
VBAで範囲を取得する場合
  
Dim 項目範囲 As String
     項目範囲 = Range("B1").Resize(Range("B" & Rows.Count).End(xlUp).Row).Address
   
で可変範囲を取得できます。
  
しかし、VBAで条件付き書式を設定した場合、
  
そのコードを実行したときの項目データ範囲を取得できますが、
それ以降に項目データ追加された場合は、反映することができなません。
 項目データ追加がある都度、実行する必要があります。
  
   
VBAではなく、一般機能で、項目データの追加/削除を自動反映する方法を紹介します。
  
ます、項目データ範囲を自動認識するための
「名前」を定義します。
  

 名前定義の名前:項目 この名前は自由です、
  
参照範囲に次の数式を入力して、登録します。
=OFFSET($B$1,,,COUNTA($B:$B),1)
   
   
入力規則の
元の値
=項目
 

トピックに返信