Notifications
Clear all

Somar valores

7 Posts
1 Usuários
0 Reactions
778 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá a todos, tenho uma planilha onde preciso inserir em cada célula referente a idade a quantidade de atendimentos feitos no mês ,a questão é como somar e acumular os valores inseridos em cada célula?
por exemplo : C5=1 enter ,digitar em C5= 2 enter, resultado C5=3,o arquivo anexo já tem uma formula em vba, mas não da praticidade no trabalho ,se alguém puder ajudar, desde já agradeço.
Esse formulário era preenchido manualmente na base dos pauzinhos estilo IIII

 
Postado : 18/08/2015 12:09 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não entendi

 
Postado : 18/08/2015 1:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não vou analisar seu modelo, mas quanto a questão de digitar em C5 e somar o valor anterior com o novo, você pode utilizar a rotina abaixo :

Copie e substitua a sua rotina "Sub Adiciona"

Private OldValue As Variant

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

    If Target.Address <> "$C$5" Then Exit Sub
    
    If Target.Count > 1 Then Exit Sub
        If Target.Value = isNothing Then
         OldValue = 0
        Exit Sub
    
    Else
        
        Application.EnableEvents = False
        Target.Value = Target.Value + OldValue
        
        Application.EnableEvents = True
        
    End If
    
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
    OldValue = Target.Value
End Sub
 
Postado : 18/08/2015 1:40 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

isso mesmo, mas é possível aplicar isso às outras células do modelo individualmente

 
Postado : 18/08/2015 2:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

elton,

Se a intenção for deixar a implementação para todas as celulas, somente apague a linha :
If Target.Address <> "$C$5" Then Exit Sub

Se a intenção for deixar a implementação somente em um intervalo definido, por exemplo em seu modelo na Região compreendida entre as celulas C5:I49 apague a linha :
If Target.Address <> "$C$5" Then Exit Sub e substitua pela :

'Será executada somente nos intervalos definidos em Range("C5:I49")
        If Intersect(Target, Range("C5:I49")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub

[]s

 
Postado : 19/08/2015 7:44 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Oi Mauro é isso mesmo fiz escrevi para ficar entre as células C5:I49,só há um pequeno porem,se eu digitar um numero na célula C5 , e digitar outro numero na célula G10,ele soma o numero que digitei na célula C5 com o que digitei na célula G10,percebi que para não ocorrer esse erro eu preciso selecionar uma célula em branco antes de digitar o próximo valor,existe uma forma de evitar isso?

 
Postado : 19/08/2015 7:40 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

elton, fiz a simulação conforme disse no modelo que anexou, digitando em C5 e depois em G5 e não acontece o que disse, é efetuado a soma corretamente, verifique sua rotina se não está faltando alguma linha, ou se não adicionou alguma outra instrução.

Para desencargo, abaixo as rotinas conforme apliquei no modelo que enviou :

Private OldValue As Variant

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        
    'Será executada somente nos intervalos definidos em Range("C5:I49")
    If Intersect(Target, Range("C5:I49")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
        
    'Será executada somente no intervalo definido "$C$5"
    'If Target.Address <> "$C$5" Then Exit Sub
    'Se a intenção é deixar para todas as celulas, delete as linhas acima
       
    If Target.Count > 1 Then Exit Sub
        If Target.Value = isNothing Then
            OldValue = 0
        Exit Sub
       
    Else
           
        Application.EnableEvents = False
        Target.Value = Target.Value + OldValue
           
        Application.EnableEvents = True
           
    End If
       
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    OldValue = Target.Value
End Sub
 
Postado : 20/08/2015 6:59 am