Originariamente inviato da 08arco80
Per testare esistenza e disponiblilità di una particolare porta, pensavo di impostare il numero della porta da testare (MSComm1.CommPort = n ) e di testarla tentando l'apertura della porta stessa (MSComm1.PortOpen = True ). In questo modo dovrebbe venir restituito un errore nel caso la porta non sia esistente o non sia disponiblie.
Mi sembra corretto ... l'unica cosa che ti consiglio e' di provare per un numero limitato di porte (che so ... dalla 1 alla 10 ) e non con un ciclo, potenzialmente, infinito ...
Nel caso in cui non ci fosse nessuna COM disponibile, il programma andrebbe avanti senza fermarsi ...

E poi devi usare la Resume e non la Goto ...

codice:
Private sub Form_load()
    Dim ix As Long

    On Error Resume Next

    For ix = 1 To 10
        MSComm1.commport = ix
        MSComm1.PortOpen = True
        
        If Err = 8002 Then
            Resume Next
        Else
            MsgBox "Aperta la porta " & ix
            Exit Sub
        End If
    Next ix

    MsgBox "Nessuna porta aperta"
End Sub