Banalmente, potresti eseguire un ciclo For sulle chiavi del dizionario (proprietà Keys) ed estrarre per ciascuna il valore corrispondente memorizzato nell'oggetto. Quando hai trovato l'elemento che coincide con il valore, la chiave corrente è quella cercata.
codice:
For Each key As String In diz.Keys
If diz(key) = valueToFind Then
Return key
End If
Next
In alternativa, potresti sintetizzare il ciclo con una espressione LINQ.
codice:
Dim query = From key In diz.Keys
Let currentValue = diz(key)
Where currentValue = valueToFind
Select key
Dim foundKey = query.FirstOrDefault()
Tieni a mente quanto ti è già stato detto, ossia che i valori potrebbero essere duplicati (a differenza delle chiavi), quindi decidi tu come gestire le casistiche, e anche il fatto che questo tipo di ricerche andrebbero ridotte al minimo, altrimenti tanto vale invertire chiave con valore o utilizzare un dizionario parallelo per velocizzare il processo.
Ciao!