|
▼EBA さん:
こんばんは。
>申し訳ありませんが、詳しく解説していただけると嬉しいのですが。
>宜しかったらお願いいたします。
サブプロシジャーの中ですよね?
'===============================================================
Sub set_combo_item(cmb As MSForms.ComboBox, func_str As String)
'input: cmb データをセットするコンボボックス
'input: func_str データ抽出のための関数式
'output:cmbのlistメンバー
Dim rng As Range
Dim rng2 As Range
Dim rng3 As Range
With ThisWorkbook.Worksheets(1)
Set rng = .Range("a1", .Range("a65536").End(xlUp))
End With
'↑ここで、A列の都道府県名が入力されているセル範囲を取得しています。
'A列が全て未入力の場合のチェックを本来は入れなければなりませんね
rng.Offset(0, 2).Formula = func_str
'↑ワーク列と決めたC列に数式を入力します。
rng.Offset(0, 2) = rng.Offset(0, 2).Value
'↑Specialcellsメソッドを使いたいため、数式の結果のみに変換しています
Set rng2 = rng.Offset(0, 2).SpecialCells(xlCellTypeConstants)
'↑値が入っているセルのみをrng2に取得します。ここも本来は、要エラー処理
cmb.Clear
For Each rng3 In rng2
cmb.AddItem rng3.Value
Next
'↑パラメータで指定されたコンボボックスのメンバとして、セット
cmb.ListIndex = 0
'↑最初のメンバを表示するようにしています。
rng2.Value = ""
'ワークで使用したC列をクリア
Set rng = Nothing
Set rng2 = Nothing
Set rng3 = Nothing
End Sub
一応、上記のようにコメントを付けましたが・・・。
|
|