2015年11月3日火曜日

エクセル VBA ドロップダウンリスト

リストからドロップダウンリストを作成します。





















下記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 件のコメント:

コメントを投稿