|
|
| Excel VBA Macro ・ コンボボックス・コントロール ・ FAQ |
|
コンボボックスコントロールの入力範囲をデータセルの最終行に設定するには?
|
|
|
|
Question 85.7 |
Excel VBA Borad (掲示板)より |
 |
 |
|
|
すいません。
コンボBOXにて元データを input Range にて選択して (たとえば B3から B20まで)、
セルリンクにて数字を反映させて (B3なら1)、
その数字を判断して If文でマクロを組み込んでいます。
ただ、元データが減ったり、増えたりするのでうまく扱えず困っています。
減らす分はできるのですが、(1個へらすと元データの選択範囲も B3から B19になる)
増やす事ができません。
増減させるのはボタンを各1個ずつ使用してマクロを起動させようと思っています。
|

(Web masterより注)
この質問のコンボボックスは、[フォーム]ツールバーを利用してワークシートへ作成するものです。 (下図)
そして、「元データの選択範囲」とは、[コントロールの書式設定]ダイアログボックスの [入力範囲]として設定するセル範囲のことです。 (左図)
|
|
|
- コンボボックスのセル範囲の再設定 -
データ追加時に元データの選択範囲を増やす処理を追加することで可能になります。
下記は、ワークシートにフォーム・コンボボックスを追加し、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
|
|
|
|
さすが本職ですね^^ また、わからない事あったらお願い致します。
|
|
|
|
| |
|
|