Usuário com melhor resposta
Gostaria que a celula do excel dividisse um número automaticamente e mantivesse na mesma celula.

Pergunta
-
Em exemplo, tenho a celula A1 e vou digitar nela o numero 200.Gostaria que quando eu digitasse o numero 200 nesta celula A1 ele dividisse automaticamente este valor por 100 mostrando na própria celula A1 o valor 2 é como se a celula tivesse uma formala ja condicionada a elatudo que eu digita la vai se dividir por 100.... si eu escreve 1000 la.... assim q eu aperta enter vai aparece 10 por exemplo na mesma celula.
existe como fazer isto no excel.
Através da utilização VBA.
Respostas
-
Cole o código abaixo na classe da planilha em que deseja reproduzir esse efeito:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub If IsNumeric(Target) Then Application.EnableEvents = False Target = Target / 100 Application.EnableEvents = True End If End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Hezequias VasconcelosModerator terça-feira, 29 de janeiro de 2013 16:57
- Marcado como Resposta Hezequias VasconcelosModerator sexta-feira, 1 de fevereiro de 2013 15:59
-
Boa noite Michael.
Acho que encontrei uma solução pra você, apesar de não gostar muito desse tipo de solução. Mas de toda forma aí vai:
Public x As Long Private Sub Worksheet_SelectionChange(ByVal Target As Range) If x <> Range("B5") Then Calc = 0 Else Calc = 1 If Not Intersect(Target, Range("B6")) Is Nothing And Calc = 0 Then 'Note que escrevi "B6"! Range("B5") = Range("B5") / 10 x = Range("B5") 'Memoriza o Valor Anterior End If End Sub
Coloque esse código num evento Woorksheet. Mas lembre-se, esse pequeno código sempre será executado quando você mudar de célula, mas somente será executada a operação quando você alterar o valor da célula e apertar 'Enter' ou selecionar a célula de baixo, como você solicitou. Se clicar com o mouse em outra célula a operação não será feita.
Você também pode incluir no 'If' as demais células vizinhas, se desejar.
Um abraço.
Filipe Magno
Michel,
favor desconsiderar a solução acima e utilizar o código a seguir:
Public x As Double Private Sub Worksheet_SelectionChange(ByVal Target As Range) If x <> Range("B5") Then Calc = 0 Else Calc = 1 If Intersect(Target, Range("B5")) Is Nothing And Calc = 0 Then Range("B5") = Range("B5") / 10 x = Range("B5") 'Memoriza o Valor Anterior End If End Sub
Dessa forma não importa mais qual célula será selecionada ao alterar o valor da célula desejada (no caso "B5").
Também troquei a declaração da variável, que estava erroneamente declarada como "Long".
Acho que dessa forma funciona certinho.
Vlw.
Filipe Magno
- Sugerido como Resposta Hezequias VasconcelosModerator terça-feira, 29 de janeiro de 2013 16:57
- Marcado como Resposta Hezequias VasconcelosModerator sexta-feira, 1 de fevereiro de 2013 15:59
Todas as Respostas
-
Boa noite Michael.
Acho que encontrei uma solução pra você, apesar de não gostar muito desse tipo de solução. Mas de toda forma aí vai:
Public x As Long Private Sub Worksheet_SelectionChange(ByVal Target As Range) If x <> Range("B5") Then Calc = 0 Else Calc = 1 If Not Intersect(Target, Range("B6")) Is Nothing And Calc = 0 Then 'Note que escrevi "B6"! Range("B5") = Range("B5") / 10 x = Range("B5") 'Memoriza o Valor Anterior End If End Sub
Coloque esse código num evento Woorksheet. Mas lembre-se, esse pequeno código sempre será executado quando você mudar de célula, mas somente será executada a operação quando você alterar o valor da célula e apertar 'Enter' ou selecionar a célula de baixo, como você solicitou. Se clicar com o mouse em outra célula a operação não será feita.
Você também pode incluir no 'If' as demais células vizinhas, se desejar.
Um abraço.
Filipe Magno
-
Cole o código abaixo na classe da planilha em que deseja reproduzir esse efeito:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub If IsNumeric(Target) Then Application.EnableEvents = False Target = Target / 100 Application.EnableEvents = True End If End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Hezequias VasconcelosModerator terça-feira, 29 de janeiro de 2013 16:57
- Marcado como Resposta Hezequias VasconcelosModerator sexta-feira, 1 de fevereiro de 2013 15:59
-
Boa noite Michael.
Acho que encontrei uma solução pra você, apesar de não gostar muito desse tipo de solução. Mas de toda forma aí vai:
Public x As Long Private Sub Worksheet_SelectionChange(ByVal Target As Range) If x <> Range("B5") Then Calc = 0 Else Calc = 1 If Not Intersect(Target, Range("B6")) Is Nothing And Calc = 0 Then 'Note que escrevi "B6"! Range("B5") = Range("B5") / 10 x = Range("B5") 'Memoriza o Valor Anterior End If End Sub
Coloque esse código num evento Woorksheet. Mas lembre-se, esse pequeno código sempre será executado quando você mudar de célula, mas somente será executada a operação quando você alterar o valor da célula e apertar 'Enter' ou selecionar a célula de baixo, como você solicitou. Se clicar com o mouse em outra célula a operação não será feita.
Você também pode incluir no 'If' as demais células vizinhas, se desejar.
Um abraço.
Filipe Magno
Michel,
favor desconsiderar a solução acima e utilizar o código a seguir:
Public x As Double Private Sub Worksheet_SelectionChange(ByVal Target As Range) If x <> Range("B5") Then Calc = 0 Else Calc = 1 If Intersect(Target, Range("B5")) Is Nothing And Calc = 0 Then Range("B5") = Range("B5") / 10 x = Range("B5") 'Memoriza o Valor Anterior End If End Sub
Dessa forma não importa mais qual célula será selecionada ao alterar o valor da célula desejada (no caso "B5").
Também troquei a declaração da variável, que estava erroneamente declarada como "Long".
Acho que dessa forma funciona certinho.
Vlw.
Filipe Magno
- Sugerido como Resposta Hezequias VasconcelosModerator terça-feira, 29 de janeiro de 2013 16:57
- Marcado como Resposta Hezequias VasconcelosModerator sexta-feira, 1 de fevereiro de 2013 15:59