Há dias, tive necessidade de criar uma tabela, para me ir fornecendo os valores gastos em produtos para animais. O que eu pretendia, era digitar a quantidade de determinado produto numa célula, fazendo que, através dessa inserção, fosse adicionando na célula contígua a quantidade total até ao momento obtida, o que faria com que, multiplicando a quantidade total pelo valor unitário de cada produto, me devolvesse o valor total gasto até ao momento, por produto. Depois, pretendia não ter que apagar manualmente os valores inseridos, mesmo gravando e fechando. Assim, pretendia, quando o workbook fosse novamente carregado, que os valores da coluna relacionada com a quantidade do produto adquirida no dia, fossem automaticamente apagados, sem, contudo, alterar os valores totais.
Vejamos a ideia:
Mostro, de seguida, os códigos que criei, para obter o resultado desejado:
Option Explicit ‘————————————————————————————— ‘ Procedure : Worksheet_Change ‘ Author : JRod ‘ Date : 03/03/2013 ‘ Purpose : Adiciona o valor inserido numa célula da coluna D ao valor que se encontra na célula correspondente da coluna E ‘————————————————————————————— ‘ Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long r = Target.Row If Not Intersect(Target, Columns(“D:D”)) Is Nothing Then Select Case IsNumeric(Target) Case True: Range(“E”&r) = WorksheetFunction.Sum(Range(“D”&r), Range(“E”&r)) Case Else: ‘não faz nada End Select End If End Sub ‘————————————————————————————— ‘ Procedure : Workbook_Open ‘ Author : JRod ‘ Date : 03/03/2013 ‘ Purpose : Ao abrir o Workbook, limpa o conteúdo da coluna 5, ou seja, da Coluna D ‘ : tendo em consideração o total de linhas que se encontram com valores. ‘————————————————————————————— ‘ Private Sub Workbook_Open() Dim lngLastRow As Long lngLastRow = Cells(Rows.Count, 5).End(xlUp).Row Range(“D2:D”&lngLastRow).ClearContents End Sub