Notifications
Clear all

Definindo .Range saltando duas em duas linhas até linha 400

12 Posts
3 Usuários
0 Reactions
1,705 Visualizações
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Seria possível um código assim para não digitar de L19 até 400 ( sempre saltando duas linhas ) ?
Range("L19,L22,L25,L28,L31..... até L340")

Private Sub Worksheet_Change(ByVal Target As Range)
 'Roda macro quando valor da célula é alterado manualmente
 If Intersect(Target, Worksheets("A").Range("L19,L22,L25,L28,L31..... até L340")) Is Nothing Then Exit Sub
 Application.EnableEvents = False
 NOVO TOTAL
 Application.EnableEvents = True
End Sub
 
Postado : 13/04/2016 11:39 am
(@mprudencio)
Posts: 2749
Famed Member
 

Nao entendi vc quer impedir a digitação em determinadas linhas???

É isso?

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 13/04/2016 12:10 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Veja se ajuda.

Private Sub Worksheet_Change(ByVal Target As Range)
 'Roda macro quando valor da célula é alterado manualmente
 If Target.Count > 1 Then Exit Sub
 If Target.Row < 19 Or Target.Row > 340 Or Target.Column <> 12 Or (Target.Row - 1) Mod 3 <> 0 Then Exit Sub
 Application.EnableEvents = False
  NOVO Total
 Application.EnableEvents = True
End Sub

Osvaldo

 
Postado : 13/04/2016 12:27 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Isso mesmo! queria evitar de digitar as vezes até 600.
Muito obrigado!

 
Postado : 13/04/2016 12:59 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Preciso de mais uma ajuda.

Daria para aplicar aqui também?

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A1:C10")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        ' Display a message when one of the designated cells has been 
        ' changed.
        ' Place your code here.
        MsgBox "Cell " & Target.Address & " has changed."
       
    End If
End Sub
 
Postado : 13/04/2016 1:25 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Daria para aplicar aqui também?

Descreva com exatidão o que você quer que o código faça.

Osvaldo

 
Postado : 13/04/2016 2:55 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Boa noite.
O código que você escreveu, funciona perfeitamente, mas junto o primeiro código que enviei para você, não funciona quando a célula e alterada para "vazio".
Já o segundo código postado por mim sim..

 
Postado : 13/04/2016 6:16 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

De novo... :x

Descreva com exatidão o que você quer que o código faça.

Osvaldo

 
Postado : 13/04/2016 6:32 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Desculpe Oswaldo.

Executar uma macro toda vez em que a célula L19 ou L22 ou L25.... até L400 for alterada ou apagada.

 
Postado : 13/04/2016 6:44 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

No código que eu sugeri altere > 340 para > 400

O código não irá executar se você alterar/limpar mais de uma célula de uma vez.

Se não funcionar a contento sugiro que você disponibilize uma amostra do seu arquivo com o código instalado e descreva com exatidão qual a operação você está fazendo, qual o resultado que está obtendo e qual o resultado esperado.

Osvaldo

 
Postado : 13/04/2016 7:02 pm
(@alanisfcsm)
Posts: 0
Trusted Member
Topic starter
 

Bom dia.
Segue planilha em anexo.

A planilha plan1 será a de trabalho
A planilha plan2 estará sempre oculta
Quando as células B5, B8, B11, B14, B17...... até B400 (saltando sempre duas) na plan1 forem alteradas ou apagadas.
ou quando a célula B22 na plan2 for alterada ou apagada.
Queria executar uma macro sempre que houver alguma dessas condições.

 
Postado : 14/04/2016 5:36 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Quando as células B5, B8, B11, B14, B17...... até B400 (saltando sempre duas) na plan1 forem alteradas ou apagadas.
ou quando a célula B22 na plan2 for alterada ou apagada.
Queria executar uma macro sempre que houver alguma dessas condições.

cole o código abaixo no módulo da Plan1

Private Sub Worksheet_Change(ByVal Target As Range)
'Roda macro quando valor da célula é alterado manualmente
If Target.Count > 1 Then Exit Sub
If Target.Row < 5 Or Target.Row > 400 Or Target.Column <> 2 _
 Or (Target.Row + 1) Mod 3 <> 0 Then Exit Sub
Application.EnableEvents = False
 NOVO Total
Application.EnableEvents = True
End Sub

cole o código abaixo no módulo da Plan2

Private Sub Worksheet_Change(ByVal Target As Range)
'Roda macro quando valor da célula é alterado manualmente
If Target.Count > 1 Then Exit Sub
If Target.Address <> "$B$22" Then Exit Sub
Application.EnableEvents = False
 NOVO Total
Application.EnableEvents = True
End Sub

Osvaldo

 
Postado : 14/04/2016 3:43 pm