Home > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > ユーザフォームのリストボックスに特定の列のデータを重複を許可せず昇順に表示する

即効テクニック

ユーザーフォーム関連のテクニック

ユーザフォームのリストボックスに特定の列のデータを重複を許可せず昇順に表示する

(Excel 97/2000)
サンプルマクロは、アクティブシートのA列(タイトル要)のデータをユーザフォームのリストボックスに重複させず、昇順に表示します。
フォームのコードウインドに記述して実行します。
Sub Sample()

    Dim myValue As Variant
    Dim myRng As Range, myCell As Range
    
    Set myRng = Range(Range("A1"), Cells(Rows.Count, 1).End(xlUp))
    myValue = myRng.Value
    
    Application.ScreenUpdating = False
    
    myRng.Sort Range("A1"), xlAscending, Header:=xlYes
    
    myRng.AdvancedFilter xlFilterInPlace, , , True
    
    With ListBox1
        .Clear
        For Each myCell In myRng.Resize(myRng.Rows.Count - 1).Offset(1) _
            .SpecialCells(xlCellTypeVisible)
            .AddItem myCell.Value
        Next
        .ListIndex = 0
    End With
    
    ActiveSheet.ShowAllData
    
    myRng.Value = myValue
    
    Application.ScreenUpdating = True

End Sub