Notifications
Clear all

Teclar Enter, Atualizar planilha e permanecer Celula ativa

9 Posts
3 Usuários
0 Reactions
1,364 Visualizações
(@jcgmc)
Posts: 0
New Member
Topic starter
 

Bom dia!

Tenho abaixo o seguinte código:

Sub auto_Change()

Application.DisplayAlerts = False
' auto_Open Macro
' Macro gravada em 11/4/2016 por Carlos

    Range("C28").Select
    'ActiveWindow.SmallScroll Down:=62
    Range("C28:C100").Select
    'ActiveWindow.SmallScroll Down:=-86
    Selection.Copy
    Range("D28").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("E91").Select
    
End Sub

Eu o criei para fazer com que ao alterar qualquer linha da coluna "B" a planilha seja atualizada automáticamente. até funciona +/- Rsssss
Mas quero fazer com que o cursor permaneça na celula ativa ao dar Enter e não como tive de deixar este último código "Range" pra funcionar, ou seja, sempre que teclo Enter ele vai pra "E91" Só assim que consegui fazer funcionar. Rsss

Agradeço desde já a ajuda.
Att, Carlos

 
Postado : 25/04/2016 9:05 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Carlos, sua explicação está um pouco confusa, mas vamos por parte :

sempre que teclo Enter ele vai pra "E91"
O foco estará sempre em "E91", porque a última instrução em sua rotina está indicando para selecionar esta Celula ao final da rotina : - Range("E91").Select

ao alterar qualquer linha da coluna "B"
- nesta sua rotina, não vejo nenhuma referencia a coluna "B".

quero fazer com que o cursor permaneça na celula ativa ao dar Enter
- A que celula está se referindo ? Veja que em sua rotina tem alguns "Select" então ao selecionar estas celulas elas passam a serem as celulas Ativas.

Suponho que tenha alguma rotina no Evento CHANGE da aba que chame a rotina "auto_Change", se for isto poste que rotina será esta.

[]s

 
Postado : 25/04/2016 10:30 am
(@jcgmc)
Posts: 0
New Member
Topic starter
 

Boa tde Mauro!

Bem, será isso oq vc ta pedindo?

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Not Intersect(Target, Range("B:B")) Is Nothing Then

'MsgBox "Ajuste o nome de sua Macro na linha abaixo !"
Call auto_Change 'SuaMacroParaContinuar

End If

Application.EnableEvents = True

End Sub

Grato!

 
Postado : 25/04/2016 10:59 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Troque a rotina por esta :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Not Intersect(Target, Range("B:B")) Is Nothing Then

    sRG = Target.Address(0, 0)
    'MsgBox "Ajuste o nome de sua Macro na linha abaixo !"
    Call auto_Change 'SuaMacroParaContinuar

End If

Range(sRG).Select

Application.EnableEvents = True

End Sub

E na "Sub auto_Change()" apague a última linha : Range("E91").Select

 
Postado : 25/04/2016 11:27 am
(@mprudencio)
Posts: 0
New Member
 

Eu posso estar enganado mas:

Arquivo > Opções > Avançado >>Opções de Edição

Desmarque:

Ao pressionar Enter mover seleção para

 
Postado : 25/04/2016 11:40 am
(@jcgmc)
Posts: 0
New Member
Topic starter
 

Agradeço sua atenção Prudencio, mas não é isso que quero.
Voltando ao Mauro...

Mauro fiz as alterações e está retornando a janela de erro: Tempo de execução '1004' O métodp Range do objeto_Worksheet falhou

E ao Depurar, aparece amarelo a linha: Range(sRG).Select

...?

 
Postado : 25/04/2016 12:06 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marcelo, só para esclarecer :

Arquivo > Opções > Avançado >>Opções de Edição

- Se desativar esta opção, ela ficará valida para o Aplicativo Excel e não só para a planilha que está utilizando, então toda vez que abrir um outro arquivo e terá de habilitar novamente, e tambem, como temos uma chamada ao evento Change o qual chama outra rotina que seleciona, copia e cola em outro range, esta opção não servirá, poi devemos indicar ao final da rotina para retornar a celula de inicio.

Carlos, a principio não é para ter erro, quais os passos que está utilizando ?
A Rotina que passei tem de ser colocada na aba que será digitado na coluna "B", a qual irá chamar a rotina "auto_Change".

Verifique se fez corretamente.

[]s

 
Postado : 25/04/2016 12:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Carlos, fiz a rotina sem testar, e agora, analisando melhor e testei vi onde está o problema.

Na rotina do Evento Change tem os :
Se a digitação for na coluna B, chamamos a rotina auto_Change,
If Not Intersect(Target, Range("B:B")) Is Nothing Then

sRG = Target.Address(0, 0)
'MsgBox "Ajuste o nome de sua Macro na linha abaixo !"
Call auto_Change 'SuaMacroParaContinuar

End If

Range(sRG).Select

O problema é a linha acima a qual selecionamos o range que houve a digitação, a qual tem de estar antes do End If, então apague esta linha e coloque após "Call auto_Change 'SuaMacroParaContinuar"

Desculpe a falha, faça a alteração e teste novamente.

[]s :(

 
Postado : 25/04/2016 12:56 pm
(@jcgmc)
Posts: 0
New Member
Topic starter
 

Mauro boa noite! Desculpe não ter respondido antes. Correria... Rss

Bem, agora sim! Fiz as alterações e funcionou perfeitamente como o desejado ok!!
Mais uma vez muito grato à sua ajuda.
Abraço!!

 
Postado : 29/04/2016 8:13 pm