コンボボックスコントロールの入力範囲をデータセルの最終行に設定するには?
Question 85.7 Excel VBA Borad (掲示板)より Previous Next
すいません。
コンボBOXにて元データを input Range にて選択して (たとえば B3から B20まで)、
セルリンクにて数字を反映させて (B3なら1)、
その数字を判断して If文でマクロを組み込んでいます。

ただ、元データが減ったり、増えたりするのでうまく扱えず困っています。 減らす分はできるのですが、(1個へらすと元データの選択範囲も B3から B19になる) 増やす事ができません。
増減させるのはボタンを各1個ずつ使用してマクロを起動させようと思っています。

(Web masterより注)
この質問のコンボボックスは、[フォーム]ツールバーを利用してワークシートへ作成するものです。 (下図)
そして、「元データの選択範囲」とは、[コントロールの書式設定]ダイアログボックスの [入力範囲]として設定するセル範囲のことです。 (左図)
Answer   2006.12.10 ゆういち
- コンボボックスのセル範囲の再設定 -

データ追加時に元データの選択範囲を増やす処理を追加することで可能になります。

下記は、ワークシートにフォーム・コンボボックスを追加し、Nameプロパティが "Drop Down 1" となった場合のサンプルコートです。

[処理内容]

コンボボックスのセル範囲を、データ入力セルの最終行に設定する。
(標準モジュールへ貼り付けて実行してください。)

Sub Test()
 B列の最終 Excel 行番号を取得する
    Dim iLastRow As Long
    iLastRow = Cells(Rows.Count, 2).End(xlUp).Row 'Rows.Count: 最大行数, 2: B列

    Dim DropDowns As Shape
    Set DropDowns = ActiveSheet.Shapes("Drop Down 1")
    DropDowns.Select
    With Selection
        .ListFillRange = "$B$3:$B$" & iLastRow ' 最終行番号でセル範囲を補正します。
        .LinkedCell = "$A$1:$A$10" ' リンクするセルの変更はここで可能
    End With
    MsgBox DropDowns.Name ' その他のプロパティを確認する場合に利用
    Range("B3").Select ' コンボボックスの選択解除の意味
End Sub
ありがとうございました
さすが本職ですね^^ また、わからない事あったらお願い致します。

 

Excel VBA Macro