About Me

A minha foto
JRod - PORTUGAL
Microsoft [MVP] - Excel (10º ano consecutivo)
Ver o meu perfil completo
Com tecnologia do Blogger.

Seguidores

Estatisticas

Free Blog Counter

eXTReMe Tracker
2007-08-12
Num newsgroup, colocaram a seguinte questão: "Gostaria que nas células que o utilizador percorra, A1, A2, A3, onde vai depositando valores numericos, esses mesmos valores sejam automaticamente carregados para uma outra célula, que será sempre a mesma, por exemplo em C5, isto porque em C5 a cada valor percorrido na coluna A, vão sendo efectuados diversos cálculos baseados nos valores dos inputs que vão sendo feitos. Eu apenas consegui atingir este objectivo colocando um botão, que o utilizador deverá carregar, quando se posicionar em A1, A2, A3 etc, que copia os valores SEMPRE para C5. Mas isto obriga a que o utilizador carregue num botão o que não dá muito jeito".
 
Através do exemplo que se segue, entende-se o que é pretendido.
 
Supondo que a célula de input é uma das que compõem o Range A1:A10 e que a célula que vai receber igualmente o valor é C5: ao digitarmos o valor 3 em A5C5 toma também o valor 3:
 
 
e ao digitarmos o valor 7 em A7, então C5 tomará igualmente esse valor, o mesmo se passando para as restantes células do Range A1:A10:
 
 

O Código:

Private Sub Worksheet_Change(ByVal Target As Range)
'JRod - Microsoft [MVP] - Excel
'blog: http://EXCELer.blogspot.com
'site: http://www.exceler.org
'email1: mail@exceler.org
'email2: blog.exceler@netcabo.pt
'
Const WS_RANGE As String = "A1:A10"
Dim vValor As Long

    On Error GoTo ws_exit
    Application.EnableEvents = False

    If Not Intersect(Target, Me.Range(WS_RANGE)) Is Nothing Then
        With Target
        ActiveCell.Offset(-1, 0).Activate
        vValor = Application.ActiveCell.Value
        Range("C5") = vValor
        End With
    End If
    
ws_exit:
    Application.EnableEvents = True
  
End Sub


Nota: O Código deve ser inserido no próprio módulo da Sheet activa.

 

Tópicos relacionados: