下記Functionの引数は
dst_sがドロップダウンリストを作成するシート
src_sがドロップダウンリストのリストを記載しているシート
rがdst_sシートのセル、上の例では”H2”
tがsrc_sのリストのタイトル、上の例では”Language”
Call make_selection(ActiveSheet,ThisWorkbook.Sheets("Config"),"H2","Language")
のように使います。
Function make_selection(dst_s As Worksheet, src_s As Worksheet, r As String, t As String)
Dim type_r As Long, type_c As Long, area As String
' ドロップダウンリストのあるシートの1行目から t の文字列を探し、
type_r = 0
On Error Resume Next
type_r = Application.WorksheetFunction.Match(t, src_s.Rows(1), 0)
On Error GoTo 0
If type_r = 0 Then Exit Function
' その列数を取得します。
type_c = src_s.Cells(1, type_r).End(xlDown).Row
' ドロップダウンを示す文字列を作成します。
area = "=" & src_s.Name & "!" & src_s.Cells(2, type_r).Address(0, 0) & ":" & src_s.Cells(type_c, type_r).Address(0, 0)
' ターゲットセルにドロップダウンリストを作成します。
With dst_s.Range(r)
.Clear
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Validation.Add Type:=xlValidateList, Formula1:=area
.Locked = False
End With
End Function

0 件のコメント:
コメントを投稿