Option Explicit
Private Elem(1 To 4) As String
Private Ops(1 To 4) As String
Private Sub Calcular()
Dim e1 As Long, e2 As Long, e3 As Long, e4 As Long
Dim o1 As Long, o2 As Long, o3 As Long
Dim s As String
Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "VBScript"
For e1 = 1 To 4
'primer operando.
s = Elem(e1)
For o1 = 1 To 4
s = s & Ops(o1)
For e2 = 1 To 4
'el bloque if solo es si no se puede repetir el operando
If e2 <> e1 Then
s = s & Elem(e2)
For o2 = 1 To 4
s = s & Ops(o2)
For e3 = 1 To 4
If e3 <> e1 And e3 <> e2 Then
s = s & Elem(e3)
For o3 = 1 To 4
s = s & Ops(o3)
For e4 = 1 To 4
If e4 <> e1 And e4 <> e2 And e4 <> e3 Then
s = s & Elem(e4)
's contiene la expresión a evaluar.
Debug.Print s & " = " & sc.Eval(s)
s = Left(s, Len(s) - Len(Elem(e4)))
End If
Next e4
s = Left(s, Len(s) - 1)
Next o3
s = Left(s, Len(s) - Len(Elem(e3)))
End If
Next e3
s = Left(s, Len(s) - 1)
Next o2
s = Left(s, Len(s) - Len(Elem(e2)))
End If
Next e2
s = Left(s, Len(s) - 1)
Next o1
s = ""
Next e1
End Sub
Private Sub Command1_Click()
Elem(1) = Str(CDbl(Text1.Text))
Elem(2) = Str(CDbl(Text2.Text))
Elem(3) = Str(CDbl(Text3.Text))
Elem(4) = Str(CDbl(Text4.Text))
Calcular
End Sub
Private Sub Form_Load()
'Cargar los operadores
Ops(1) = "+"
Ops(2) = "-"
Ops(3) = "*"
Ops(4) = "/"
End Sub