Notifications
Clear all

Multiplicar valor digitado

11 Posts
2 Usuários
0 Reactions
2,102 Visualizações
(@elielgdc)
Posts: 0
New Member
Topic starter
 

Boa tarde pessoal!
Creio que o que preciso não seja possível fazer com fórmulas.
Eu preciso que o todo valor que eu digitar em determinada linha multiplique por um determinado valor.
Eu fiz um macro que multiplica determinada linha por 2, mas sempre que eu adicionar uma nova informação e executar o macro, as antigas iram novamente multiplicar por 2 alterando meu histórico de informações :X
Enfim, tentei ser o mais claro possível.

 
Postado : 23/09/2015 2:30 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

eliel, por falta de mais informações, tipo "digitar em determinada linha, fiz uma rotina basica onde em qualquer celula que digitar o valor digitado será multiplicado por 5, veja se seria mais ou menos isto o que pretende.

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim sVlrMultiplica
    Dim sVlrDigitado
    
    sVlrMultiplica = 5 'Valor a multiplicar
    sVlrDigitado = Target.Value 'Valor Digitado
    
    Application.EnableEvents = False
    
    Target = sVlrDigitado * sVlrMultiplica 'Resultado Valor digitado X Valor Multiplicador
    
    Application.EnableEvents = True

End Sub
 
Postado : 23/09/2015 4:50 pm
(@elielgdc)
Posts: 0
New Member
Topic starter
 

Mauro, não consegui usar seu macro.
Suponhamos que D3:J3, todo valor que eu digitar nessa linha quero que multiplique por um determinado valor.
Em anexo um exemplo, se puder colocar o macro e testar pra me devolver, agradeço.

 
Postado : 24/09/2015 11:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Utilizei o mesmo valor multiplicador da rotina acima (5), e acrescentei as instruções para que seja efetuada a multiplicação somente se for digitado no Range D3 a J3, ficando :

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim sVlrMultiplica
    Dim sVlrDigitado
    
    If Intersect(Target, Range("D3:J3")) Is Nothing Then Exit Sub
    
    Application.EnableEvents = False
    
    sVlrMultiplica = 5 'Valor a multiplicar
    sVlrDigitado = Target.Value 'Valor Digitado
    
    Application.EnableEvents = False
    
    Target = sVlrDigitado * sVlrMultiplica 'Resultado Valor digitado X Valor Multiplicador
    
    Application.EnableEvents = True

End Sub

Veja o exemplo:

[]s

 
Postado : 24/09/2015 12:31 pm
(@elielgdc)
Posts: 0
New Member
Topic starter
 

Muito obrigado Mauro, me desculpe a ingenuidade... mas não consegui adicionar isso na minha planilha, como você fez?

 
Postado : 24/09/2015 12:50 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

eliel,

Clique com o Botão direito do Mouse na aba que pretende e selecione "Exibir Código" e na janela que abrir cole a rotina acima.

Agora o principal, você tem de salvar o arquivo como "Tipo Habilitado para Macros" - "xlsm", se não salvar neste tipo não irá funcionar.

[]s

 
Postado : 24/09/2015 12:57 pm
(@elielgdc)
Posts: 0
New Member
Topic starter
 

Consegui fazer funcionar Mauro, porém..... hahahah
Quando algumas celulas da linha que quero apagar o macro "crasha", só consigo clicar em fim e depurar, quando eu clico em fim ele para de funcionar e não sei faze-lo funcionar novamente :X

 
Postado : 24/09/2015 1:21 pm
(@elielgdc)
Posts: 0
New Member
Topic starter
 

Consegui resolver, é só habilitar o macro novamente pela segurança do macro. Porém o problema ao selecionar e apagar continua.

 
Postado : 24/09/2015 1:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se entendi, é só adicionar a linha abaixo antes da linha "If Intersect(Target, Range("D3:J3")) Is Nothing Then Exit Sub"

If Target.Cells.Count <> 1 Then Exit Sub

[]s

 
Postado : 24/09/2015 1:46 pm
(@elielgdc)
Posts: 0
New Member
Topic starter
 

Deu certo Mauro, muito obrigado pela sua atenção e disposição! Nota 1000!

 
Postado : 24/09/2015 1:49 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Consegui fazer funcionar Mauro, porém..... hahahah
Quando algumas celulas da linha que quero apagar o macro "crasha", só consigo clicar em fim e depurar, quando eu clico em fim ele para de funcionar e não sei faze-lo funcionar novamente :X

Esqueci de explicar que apos do erro, a rotina já havia passado pela instrução :
Application.EnableEvents = False
Esta instrução impede tipo que congela o processo e impede que continue, se não tivermos esta linha entraremos em um Loop infinito porque estamos utilizando o Evento CHANGE, e apos multiplicar é colocado o resultado na celula e assim multiplicar novamente infinitamente, por isto apos o calculo definimos a variável para "true"

Application.EnableEvents = True

Se acontecer algum erro novamente, é só criar uma rotina somente com esta instrução e rodar :

Sub EventsTrue()
Application.EnableEvents = True
End Sub

[]s

 
Postado : 24/09/2015 1:58 pm