Solución - Curso de VBA Excel

Anuncio
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
Descargar