Continuando com a resolução dos meus primeiros exercícios em Vba aqui fica mais um:

Elabore um algoritmo que permita Somar  5 Células na Horizontal a Partir da Célula Seleccionada.

Aqui fica o código que resolve o exercício:

Sub MatrixMult()
    Dim a(1 To 3, 1 To 3) As Double, b(1 To 3, 1 To 3) As Double
    Dim m(1 To 3, 1 To 3) As Double

    Dim i As Integer, j As Integer, k As Integer

    Dim s As Double

    Dim aCell As Range, bCell As Range, mCell As Range

    ' guardar valores das células A1:C3 na matriz a()
    Set aCell = Range("A1")
    For i = 1 To 3 ' linha
        For j = 1 To 3 ' coluna
            a(i, j) = aCell.Offset(i - 1, j - 1).Value
        Next j
    Next i

    ' guardar valores das células E1:G3 na matriz b()
    Set bCell = Range("E1")
    For i = 1 To 3 ' linha
        For j = 1 To 3 ' coluna
            b(i, j) = bCell.Offset(i - 1, j - 1).Value
        Next j
    Next i

    ' calcula o produto
    For i = 1 To 3 ' linha
        For j = 1 To 3 ' coluna
            s = 0
            For k = 1 To 3
                s = s + a(i, k) * b(k, j)
            Next k
            m(i, j) = s
        Next j
    Next i

    ' apresentar os valores de m(i,j) nas células I1:K3
    Set mCell = Range("I1")
    For i = 1 To 3 ' linha
        For j = 1 To 3 ' coluna
            mCell.Offset(i - 1, j - 1).Value = m(i, j)
        Next j
    Next i
End Sub

Não sei se a forma como implementei a resolução do exercício é a mais correcta, e por isso fico à espera de comentários, ou mesmo de correcções e dicas de melhoramento do código que apresento.

Share

Leave a Reply