すぐに役立つエクセルVBAマクロ集 すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
FAQ
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile 500連発・組み方講座フォロー Big Color Pallet
[広告]
Excel VBA Macro
Excel DownLoad
© 1997 - 2007
永井善王.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ コンボボックス・コントロール ・ FAQ
コンボボックスコントロールの入力範囲をデータセルの最終行に設定するには? Click Here! Click Here!
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
ありがとうございました
さすが本職ですね^^ また、わからない事あったらお願い致します。
Click here to visit our sponsor