Sono nuovo in VBA e voglio tornare da una funzione quando vedo un errore. Non è in grado di farlo. Qualche indicazione?VBA - Ritorno da una funzione in caso di errore
Function GetEditboxValue(control As IRibbonControl, text As String) As String
If Not IsMissing(text) Then
If Not IsNumeric(text) Then
MsgBox "Please enter numeric value only."
' I WANT TO RETURN HERE
End If
End If
If control.id = "xyz" Then
spaceAboveTable = text
End If
End Function
Ti rendi conto che la funzione non restituisce un valore, giusto? In VBA, una funzione che non restituisce un valore dovrebbe essere dichiarata come 'Sub'. Altrimenti, ti consigliamo di assegnare un valore a "GetEditboxValue" prima di uscire dalla funzione. (Ovviamente, questo è nel caso in cui non si desideri uscire presto * senza * restituire un valore.) –
Per non dimenticare, questa funzione sembra molto brutta. Invece di restituire un valore, da una editbox (ciò che implica il nome), l'unica cosa che sembra fare è creare qualche effetto collaterale sgradevole - dandoti un mal di testa prima o poi. Invece di separare il rilevamento degli errori dalla gestione degli errori, gestisce gli errori stessi con un MsgBox. Meglio separare queste preoccupazioni, se il testo non è numerico, restituisce un valore di errore o genera un evento di errore o qualcosa del genere, ma lascia che il chiamante decida se vuole mostrare una finestra di messaggio o fare una diversa gestione degli errori. –
@Cody, giusto per chiarire la tua osservazione per @ydobonmai, tutte le routine dichiarate come funzioni restituiscono un valore. Se non si specifica esattamente * quale * valore con una riga come "GetEditboxValue =", la funzione restituirà qualsiasi valore predefinito per il tipo di funzione. In questo caso è la stringa vuota, ma potrebbe essere 0, "", False, Vuoto, Niente, ecc. –
jtolle