Private Sub UserForm_Initialize()
Dim endrow As Integer
Dim i As Integer
Dim str As String
endrow = Sheet1.Range("b65536").End(xlUp).Row
With Sheet1
For i = 2 To endrow
  str = Sheet1.Range("b" & i)
  ComboBoxgoods.AddItem str
Next
End With
End Subcombox控件列表下添加的是sheet1中的第b列的内容,即客户名字。。
1)现在我想让combox列表中的下面的这些客户名字能够按字母顺序排列,这个如何实现啊?我现在显示的是根据sheet1表中B列的内容依次显示出来的。
2)或者另外一种思路:现在combox中有二个以d开头的客户,分别是dig,deathcat,目前这两个是一个在最上面,一个在最下面。我想让当我在combox控件中输入一客户名字时,例如:deathcat,当我一输入d时,显示的是最上面的deathcat,但在列表中会把那个dig也紧挨着deathcat出现,即说让以d打头的优先出现在下面的列表中?目的只有一个,如何方便使用者选择相应客户名字?先谢过老大。

解决方案 »

  1.   

    AddItem 之前排好序
    你可以先把Excel表里的数据排好再做呀
      

  2.   

    这样不可以的。如果在additem前排好序,那样的话我的sheet1表就乱了。。
      

  3.   

    类似这样,把excel当成表来读,然后排序
    再添加]Private Sub cmdReadXLS_Click()
          Set dgData.DataSource = Read_Excel(App.Path & "\" & "test.xls")
          Set obj = Nothing
    End SubPublic Function Read_Excel _
             (ByVal sFile _
              As String) As ADODB.Recordset      On Error GoTo fix_err
          Dim rs As ADODB.Recordset
          Set rs = New ADODB.Recordset
          Dim sconn As String      rs.CursorLocation = adUseClient
          rs.CursorType = adOpenKeyset
          rs.LockType = adLockBatchOptimistic      sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile
          rs.Open "SELECT * FROM [sheet1$]", sconn
          Set Read_Excel = rs
          Set rs = Nothing
          Exit Function
    fix_err:
          Debug.Print Err.Description + " " + _
                      Err.Source, vbCritical, "Import"
          Err.Clear
    End Function