Debug it with breakpoint. make sure your connection is open and that the recordset has returned something
Also use code tags around your code
Code:
Private Sub UserForm_Initialize()
   On Error GoTo UserForm_Initialize_Err
   Dim cnn As New ADODB.Connection
   Dim rst As New ADODB.Recordset

   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\StaffDatabase.mdb"
   rst.Open "SELECT DISTINCT [Department] FROM tblStaff ORDER BY [Department];", cnn, adOpenStatic
   rst.MoveFirst
    With Me.ComboBox1
      .Clear
      Do
        .AddItem rst![Department]
        rst.MoveNext
      Loop Until rst.EOF
    End With
    UserForm_Initialize_Exit:
    On Error Resume Next
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    Exit Sub
  UserForm_Initialize_Err:
    MsgBox Err.Number & vbCrLf & Err.Description, vbCritical, "Error!"
  Resume UserForm_Initialize_Exit
End Sub
Possibly because you are adding a description but have no id column in the combo...
Shouldnt matter.


Vaguely remember set rst = cnn.execute...? rather than rst.open (which is DAO isnt it?)
edit: ms help page link