Hola, la propiedad
CommPort acepta solo puertos validos.
Si queres conectarte al puerto que esta seleccionado en el combobox, simplemente toma solo la parte que dice "COM4" la otra parte del texto es invalida, no se te va a conectar nunca.
la propiedad solo toma puertos "COM1", "COM2"..etc...si vos le pones "Arduino (COM4)" no te va a funcionar.
El problema aca es que vos estas mostrando en el combobox la descripcion del puerto, pero el mscomm necesita solo el numero del puerto, no la descripcion.
entonces tenes 2 opciones:
1 - extraes del texto la parte que dice "COM4", sacando el texto que esta entre parentesis (no lo recomiendo ya que puede venir algun texto que haga que esto no funcione).
2 - cuando llenas el combo usar un array para almacenar solo el nombre del puerto, sin la descripcion.
aca te dejo un simple ejemplo de como llenar un combobox con texto el nombre del puerto y luego al hacer clic en algun item, te muestra solo el nombre del puerto, sin la descripcion, que es lo que necesitas para conectarte al mscomm.
Option Explicit
Dim vPuertos() As String 'Para almacenar el verdadero nombre de los puertos, sin la descripocion.
Private Sub Form_Load()
Dim i As Integer
For i = 1 To 10
Combo1.AddItem "Arduino (COM" & i & ")" ' cargo el combo con descripcion y el numero del puerto
ReDim Preserve vPuertos(Combo1.ListCount - 1)
vPuertos(Combo1.ListCount - 1) = "COM" & i
Next
End Sub
Private Sub Combo1_Click()
MsgBox vPuertos(Combo1.ListIndex) ' te muestra solo el nombre real del puerto, sin la descripcion
End Sub
saludos.