SOLUCION PRACTICA Nº7 Factorial de un número (solución 1) Sub Factorial() Dim a, b, i As Integer a = Int(ActiveCell.Value) 'a se pasa entero porque los factoriales no pueden contener decimales b=1 If a = 0 Then b=0 Else If a = 1 Then b=1 Else For i = 1 To a b=b*i Next End If End If ActiveCell.Value = b End Sub Solución 2 (más elaborada con variaciones, permutaciones y combinaciones) Sub MainTc() Dim code Dim result code = InputBox("Digite el numeral deseado: " + Chr(13) + Chr(10) _ + "1. Factorial F(n)" + Chr(13) + Chr(10) + "2. Variaciones V(n,m)" + Chr(13) + Chr(10) _ + "3. Permutaciones con repetición Pr(n,m)" + Chr(13) + Chr(10) + "4. Combinaciones C(n,m)") Select Case code Case 1: result = Factorial(InputBox("Factorial de: ")) Case 2: result = Permut(InputBox("Permutaciones de n = "), InputBox("tomados de m = ")) Case 3: result = PermutRep(InputBox("Permut. con repet. de n = "), InputBox("tomados de m = ")) Case 4: result = Combinat(InputBox("Combinaciones de n = "), InputBox("tomados de m = ")) Case Else: result = MsgBox("ERROR") End Select MsgBox result End Sub Function Factorial(n) Factorial = n If Factorial = 1 Then Else Factorial = Factorial * Factorial(n - 1) End If End Function Function Permut(n, m) If n >= m Then Permut = Factorial(n) / Factorial(n - m) Else MsgBox "Error en datos..." End If End Function Function PermutRep(n, m) PermutRep = n ^ m End Function Function Combinat(n, m) If n >= m Then Combinat = Factorial(n) / (Factorial(m) * Factorial(n - m)) Else MsgBox "Error en datos..." End If End Function Sub comprueba() Dim cadena As Variant cadena = ActiveCell.Value If IsEmpty(cadena) Then MsgBox "La celda no contiene datos" ElseIf IsNumeric(cadena) Then MsgBox "La celda contiene datos numéricos" ElseIf IsDate(cadena) Then MsgBox "La celda contiene datos tipo fecha" ElseIf Not IsArray(cadena) Then MsgBox "La celda no es un array" Else MsgBox "No hay nada para evaluar" End If End Sub