/ / Excel VBA - Utilizzo degli intervalli come parametri opzionali per le funzioni? - Excel, VBA, Excel-VBA, gamma

Excel VBA - Utilizzo degli intervalli come parametri opzionali per le funzioni? - gamma excel, vba, excel-vba

Mi piacerebbe scrivere una funzione VBA che ha un intervallo come parametro opzionale. Ad esempio qualcosa del tipo:

Public Function testfunc(S As String, Optional R As Range) As String
testfunc = S
For Each cell In R
testfunc = testfunc + cell
Next cell
End Function

Ho provato la funzione sopra, ma ottengo un #VALUE! errore. Ho anche provato a racchiudere il ciclo For all'interno di un'istruzione If (R) Then ... End If.

Quale sarebbe il modo di gestire un intervallo opzionale, dove se l'intervallo esiste, viene ripetuto tramite un ciclo For Each?

risposte:

8 per risposta № 1

Prova questo

Public Function testfunc(S As String, Optional R As Range = Nothing) As String
testfunc = S
if not R is nothing then
For Each cell In R
testfunc = testfunc & cell
Next cell
end if
End Function

Ho provato questo bene in Excel 2007. Devi inserirlo in un modulo, non nelle sezioni del codice del foglio di lavoro o della cartella di lavoro. La funzione può quindi essere chiamata da VBA con o senza un oggetto Range o come funzione di foglio di lavoro.


0 per risposta № 2

Soluzione:

Public Function testfunc(S As String, Optional R As String = vbNullString) As String
testfunc = S

If R <> vbNullString Then
For Each cell In Range(R)
" & for concatenation not + "
testfunc = testfunc & cell
Next cell
End If
End Function

Sub test()
MsgBox testfunc("", "A1:A5"), vbOKOnly, "Results"
MsgBox testfunc(""), vbOKOnly, "Results"
End Sub