You are on page 1of 3

Sub Macro1()

'
'CALCULADORA_MATRICES Macro
'declaracion de variables
Dim i, j, k, numfa, numfb, numca, muncb, flag, opcion As Integer
Dim matrizA(300, 300) As Double
Dim matrizB(300, 300) As Double
Dim matrizC(300, 300) As Double
flag = 0
'Dimension de la matriz A e ingreso
numfa = InputBox("Ingrese el numero de filas de la matriz A")
numca = InputBox("Ingrese el numero de columnas de la matriz A")
For i = 1 To numfa
For j = 1 To numca
matrizA(i, j) = InputBox("Elemento A " & i & "-" & j)
Next
Next
'Dimension de la matriz B e ingreso
numfb = InputBox("Ingrese el numero de filas de la matriz B")
numcb = InputBox("Ingrese el numero de columnas de la matriz B")
For i = 1 To numfb
For j = 1 To numcb
matrizB(i, j) = InputBox("Elemento B " & i & "-" & j)
Next
Next
'menu de opciones
opcion = InputBox("Elija la opcion:" + Chr(13) + "1: suma" + Chr(13) + "2: resta
" + Chr(13) + "3: multiplicacion" + Chr(13) + "4: divisn")
Select Case opcion
Case 1
If (numfa = numfb And numca = numcb) Then
For i = 1 To numfa
For j = 1 To numcb
matrizC(i, j) = matrizA(i, j) + matrizB(i, j)
Next
Next
Else
flag = 1
End If
Case 2
If (numfa = numfb And numca = numcb) Then
For i = 1 To numfa
For j = 1 To numcb
matrizC(i, j) = matrizA(i, j) - matrizB(i, j)
Next
Next
Else
flag = 1
End If
Case 3
If (numca = numfb) Then
For i = 1 To numfa
For j = 1 To numcb

matrizC(i, j) = 0
For k = 1 To numca
matrizC(i, j) = matrizC(i, j) + matrizA(i, k
) * matrizB(k, j)
Next
Next
Next
Else
flag = 2
End If
Case 4
If (numfa = numfb And numca =
For i = 1 To numfa
For j = 1 To numcb
If (matrizB(i, j)
matrizC(i, j)
Else
matrizC(i, j)
End If
Next
Next
Else
flag = 1
End If

numcb) Then
= 0) Then
= 9999
= matrizA(i, j) / matrizB(i, j)

Case Else
MsgBox ("Error de opcion")
End Select
'Impresion de la matriz A
Worksheets("hoja1").Cells(2, 2).Value = ("MATRIZ A")
For i = 1 To numfa
For j = 1 To numca
Worksheets("hoja1").Cells(i + 3, j).Value = (matrizA(i, j))
Next
Next
'Impresion de la matriz B
Worksheets("hoja1").Cells(2, j + 2).Value = ("MATRIZ B")
For i = 1 To numfb
For j = 1 To numcb
Worksheets("hoja1").Cells(i + 3, j + (numca + 1)).Value = (matrizB(i, j)
)
Next
Next
'Accin de la bandera
If (flag = 1) Then
MsgBox ("ERRROR")
MsgBox ("Para la suma, resta o divisin de matrices" + Chr(13) + "Debe
n tener el mismo numero de filas y columnas" + Chr(13) + "Es decir misma dimensin
")
Else
If (flag = 2) Then
MsgBox ("ERRROR")
MsgBox ("Para la multiplicacin de matrices" + Chr(13) + "El numero de col
umnas de la matriz A dede ser igual" + Chr(13) + "al numero de columnas de la ma

triz B")
End If
End If
'Impresion de la matriz C
Worksheets("hoja1").Cells(2, ((2 * j) + 2)).Value = ("MATRIZ RESULTADO")
For i = 1 To numfa
For j = 1 To numcb
If (matrizC(i, j) = 9999) Then
Worksheets("hoja1").Cells(i + 3, j + ((2 * numcb) + 2)).Value = Erro
r
Else
Worksheets("hoja1").Cells(i + 3, j + ((2 * numcb) + 2)).Value = (mat
rizC(i, j))
End If
Next
Next
End Sub

You might also like