Le soluzioni che ti ho proposto convertono in maiuscolo non mentre digiti ma solo alla fine:
1) lostfocus, quando abbandoni il controllo
2) command, quado clicchi il tasto aggiunto (accetta)
3) quando premi return (invio, enter), sulla casella txt_voce
Se proprio vuoi che mentre digiti, nella casella vengano mostrati sempre e solo le maiuscole, ecco un codice scritto al volo, non sono certo di aver previsto tutte le evenienze, è da molto che non scrivo in VB6:
Dim pos As Integer
Dim secondavolta As Boolean
' la routine txt_voce_Change viene eseguita due volte
' la prima quando si cambia il testo con la digitazione
' la seconda quando agisce UCase
' la posizione del cursore va intercettata solo la prima volta
' e ripristinata solo alla fine
Private Sub txt_voce_Change()
If secondavolta Then
secondavolta = False
Else
pos = txt_voce.SelStart
secondavolta = True
txt_voce.Text = UCase(txt_voce.Text) ' se il testo cambia la routine viene rieseguita
txt_voce.SelStart = pos
End If
End Sub
' se vengono digitati numeri o caratteri speciali, la routine non viene rieseguita
' perché il testo non cambia e la boolean secondavolta non viene settata a false.
' con un controllo sui caratteri digitati, si risolve il problema.
Private Sub txt_voce_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode < 58 Or KeyCode > 122 Then secondavolta = False
End Sub
Funziona anche se incolli un testo in minuscolo, ci sarebbero anche altre strade, ma questa è la prima idea che mi è venuta.