As your form begins loading, there are no values by default in the combobox. So what happens is as it begins populating the combobox with values this causes the SelectedIndexChanged event to fire. This is expected behavior.
Create a class level boolean variable that will keep track of the form load process. Then check the boolean inside the SelectedIndexChanged event, if it is true the form is still loading and don't run the code in the event. If it is false the loading has completed and you want the code to fire.
Example:
CODE
Dim loading As Boolean = True
Private Sub frmModifyUser_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Tables\Employees.accdb")
conn.Open()
Dim myadapter As New OleDbDataAdapter("SELECT * FROM tblEmployee", conn)
Dim dtset As New DataSet
myadapter.Fill(dtset)
myadapter.Dispose()
Dim table As DataTable = dtset.Tables(0)
mcboEmployee.DataSource = table
mcboEmployee.DisplayMember = "EmpID"
conn.Close()
'the load event has finished, set the boolean to False
loading = False
End Sub
Private Sub mcboEmployee_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mcboEmployee.SelectedIndexChanged
'Do not run the code unless the boolean is False
If Not loading Then
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Tables\Employees.accdb")
conn.Open()
Dim myadapter As New OleDbDataAdapter("SELECT * FROM tblEmployee where EmpID =" + mcboEmployee.Text, conn)
Dim dtset As New DataSet
myadapter.Fill(dtset)
myadapter.Dispose()
Dim table As DataTable = dtset.Tables(0)
txtUserID.Text = table.Rows(0).Item(0)
conn.Close()
End If
End Sub
Hope that helps.