First you need to make sure that the auto post back property is set to true on any drop down that you want to fire events on the server side (during a post back).
After that is done...
If that is an exact copy of the code snippet that you posted the reason that the selected item change event is not getting handled is that you have not "tied" this method to the event delegate.
You need to place a Handles statement after your event handler function like this...
protected Sub myDropDown_SelChange(byval sender as Object,byval e as EventArgs) Handles <name of control>.<event delegate>
End Sub
In your situation if the control that is fireing the event is in fact called myDDL then it will look like this...
Public Sub myDDL_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles myDDL.SelectedIndexChanged
after you add the handles statement it will tie this function to the event delegate of the drop down list.
As far as having a single function handle the selected index changed event of multiple drop downs, this is done by creating a chain of items that all fire the same event like this...
Protected mySelectedChangedHandler(byval sender as object,byval e as System.EventArgs) Handles ddlOne.SelectedIndexChanged,ddlTwo.SelectedIndexChanged,ddlThree.SelectedIndexChanged
Keep in mind that the event delegate that you need to link to this event handler MUST have the same function prototype as the event handler itself (example - you couldn't link a datagrid page changed event to this becase the second parameter of that control is an object of DataGridPageChangedEventArgs and not just EventArgs.
Cheers!