コントロール コンボボックス(3列目がカナ設定)フリガナ順ソート

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Public Sub コンボ昇順(obj As ComboBox)
'*******************************************************************************
'コンボ(3列目がカナ設定)フリガナ順ソート
'*******************************************************************************
Dim n As Long, i As Long, m As String, s As Long, j As Long, t(3) As String
Dim Data(), a As Long, b As Byte

      n = obj.ListCount
      ReDim Data(n, 3)
      For a = 1 To n
            For b = 1 To 3
                  Data(a, b) = obj.List(a - 1, b - 1)
            Next b
      Next a
      
    For i = 2 To n - 1 '1は項目
        m = Data(i, 3)
        s = i
        
        For j = i + 1 To n
            If Data(j, 3) < m Then
                m = Data(j, 3)
                s = j
            End If
        Next j
        
        t(3) = Data(i, 3): t(2) = Data(i, 2): t(1) = Data(i, 1)
        Data(i, 3) = Data(s, 3): Data(i, 2) = Data(s, 2): Data(i, 1) = Data(s, 1)
        Data(s, 3) = t(3): Data(s, 2) = t(2): Data(s, 1) = t(1)
    Next i
    obj.Clear
    
      For a = 1 To n
                  obj.AddItem Data(a, 1)
            For b = 2 To 3
                  obj.List(a - 1, b - 1) = Data(a, b)
            Next b
      Next a
 
End Sub

 

 

2000年01月01日|[VBサンプルコード]:[Control]