Maybe you could use something like this as a point of departure:
Sub Demo()
Dim iCase As Long
Randomize
iCase = Int(Rnd * 1677216)
MsgBox "Case " & iCase & vbLf & _
"(" & Dec2Bin(iCase, 3) & ")" & vbLf & vbLf & _
FunctionGenerator(iCase)
End Sub
Function FunctionGenerator(iCase As Long) As String
Dim avFunc As Variant
Dim sFunc As String
Dim i As Long
Dim iFunc As Long
avFunc = Array(" + (1-exp(-(x(i)*t))/(x(i)*t)", _
" + (1-exp(-(x(i)*t))/(x(i)*t)-exp(x(i)*t", _
" + func2", _
" + func3", _
" + func4", _
" + func5", _
" + func6", _
" + func7")
sFunc = "f(x) = " & vbLf
For i = 0 To 7
iFunc = (iCase And (7 * 8 ^ i)) / 8 ^ i
sFunc = sFunc & avFunc(iFunc) & vbLf
Next i
FunctionGenerator = Left(sFunc, Len(sFunc) - 1)
End Function
Function Dec2Bin(ByVal iNum As Long, _
Optional ByVal iGrp As Long = 32) As String
' shg 2007-0807
Dim i As Long
Dim n As Long
Dim sBin As String
If iGrp < 1 Then iGrp = 32
n = 1
For i = 1 To 30
sBin = IIf(iNum And n, "1", "0") & sBin
If (Len(Replace(sBin, " ", "")) Mod iGrp) = 0 Then sBin = " " & sBin
n = 2 * n
Next
sBin = IIf(iNum And n, "1", "0") & sBin
If (Len(Replace(sBin, " ", "")) Mod iGrp) = 0 Then sBin = " " & sBin
If iNum < 0 Then
Dec2Bin = "1" & sBin
Else
i = InStr(1, sBin, "1")
Dec2Bin = Mid(sBin, IIf(i, i, Len(sBin)))
End If
End Function
To see the results as a UDF, put this in a cell and format to wrap text:
=FunctionGenerator(INT(RAND()*8^8))
Bookmarks