That's pretty good Sixth Sense.
If that were the method, as I sometimes find myself lacking options, you can add different qualifying lines to your code so you don't have to keep writing multiple Public Functions. You can just call from the sub routine and assign them in your Function ...
Option Explicit
Public Function Arr(test)
Select Case test
Case "yes"
Arr = Array("a", "b", "c")
Case "no"
Arr = Array("d", "e", "f")
End Select
End Function
Sub try()
Dim a As Variant, test As String
test = "no"
For Each a In Arr(test)
MsgBox a
Next a
End Sub
Change the 'test = "no" ' to whatever you wanted, msgbox, returned value, whatever. Just thought I'd throw that out there, fwiw.