まとめればスッキリ
「こんな感じです。
でも、同じオブジェクトの指定を何度も記述すると、うっとうしいので…」
Function リスト範囲設定(ListName As String, ListRange As Range) As Boolean
Dim r As Long, c As Long, o As Object
With Worksheets("リスト設定")
Set o = .Rows(1).Find(ListName)
If Not o Is Nothing Then
c = o.Column
r = .Cells(Rows.Count, c).End(xlUp).Row
Set ListRange = .Range(.Cells(2, c), .Cells(r, c))
リスト範囲設定 = True
End If
End With
End Function
「こんな感じで、Withステートメントでまとめればスッキリします。
アクティブシートを切り替えなくても、リスト設定シートのセルを操作できますよ」
泉先輩が目を丸くして、頬を染めます。
「恥ずかしいわ…。
オブジェクトの階層構造なんて、ベーシックの最初で習うことなのに…。
よく理解していなかったのね…」
「いえいえ…VBA中級者でも、この辺りはよくやりますよ。
あと引数のListName、これは、Worksheet_SelectionChangeイベントで取得する、
リストの項目名ですよね?
出荷一覧表の外のセルを、ユーザーが選択したらどうなります?」
「そのときは……。
あっ、3行目の見出しが無いから、空の文字列を渡しちゃうわ!」