Ir ao conteúdo
  • Cadastre-se

VBA - Procedimento muito grande


Posts recomendados

Boa tarde amigos

Eu estou trabalhando em uma planilha no Excel com esse código:
 

Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("E2").Address Then
Sheets("Estoque").Cells(2, "D") = Sheets("Estoque").Cells(2, "E") + Sheets("Estoque").Cells(2, "D")
Sheets("Estoque").Cells(2, 5).ClearContents
Sheets("Estoque").Cells(2, 5).Select
End If
End Sub



Só que eu preciso usar esse código para 300 linhas no Excel e está relatando "procedimento muito grande"

alguém por acaso sabe de uma solução para esse caso?

att.
Lopes

Link para o comentário
Compartilhar em outros sites

Olá Basole. Obrigado pela atenção

Bem, esse código eu que apresentei ali é direcionado para duas colunas (D e E) e uma linha nesse caso (Linha 2).

Ele faz a seguinte função:

 

Eu digito um valor x na célula E2 e esse valor é somado (ou subtraído dependendo do que eu coloco) na célula D2, depois o valor inserido inicialmente em E2 é limpo para que eu posso inserir um novo valor futuro.

 

No caso eu preciso usar esse código de D2 e E2 até D300 e E300 ... só que ao inserir esses códigos e ir moldando eles um por um para que funcione em todas as células que eu preciso gera a seguinte mensagem

 

Procedimento muito grande.

 

Então não sei se tem como encurtar esse comando para abranger todas as células que eu preciso.

Acho que o que gera isso é o fato de usar tantos If (no caso são 300).

 

Eu não tenho experiencia com VBA, então precisei recorrer aos amigos aqui.

 

Mais uma vez obrigado pela atenção.

abraços

Link para o comentário
Compartilhar em outros sites

Segue com as alteraçoes:

 


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub

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

Sheets("Estoque").Cells(2, "D") = Sheets("Estoque").Cells(2, "E") + Sheets("Estoque").Cells(2, "D")
Sheets("Estoque").Cells(2, 5).ClearContents
Sheets("Estoque").Cells(2, 5).Select

End If

End Sub

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...

Boa noite, aproveitando o gancho, eu utilizo este cógigo

 

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(False, False) = "A6" Then
        Range("B6").Select
    ElseIf Target.Address(False, False) = "B6" Then
        Range("A7").Select

End if

 

End sub

 

Por exemplo, quando digito um valor na celula A6, ele pula automaticamente para celula B6, da B6 para A7, da A7 para B7, e assim vai, mas preciso aplicar esse procedimento até a celula b1000, porém apresente o erro do colega acima, "procedimento muito grande", será que alguém poderia me ajudar com esse caso

 

Agracedo quem puder me ajudar.

 

Link para o comentário
Compartilhar em outros sites

Segue sugestao

Caso nao atenda, disponibilize arquivo exemplo.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub

    If Not Intersect(Target, Range("A2:B1000")) Is Nothing Then
          
          If Target.Column = 1 Then
              Range("B" & Target.Row).Select
           ElseIf Target.Column = 2 Then
            Range("A" & Target.Row + 1).Select
           End If
       
    End If

End Sub

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Basole disse:

Segue sugestao

Caso nao atenda, disponibilize arquivo exemplo.


Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub

    If Not Intersect(Target, Range("A2:B1000")) Is Nothing Then
          
          If Target.Column = 1 Then
              Range("B" & Target.Row).Select
           ElseIf Target.Column = 2 Then
            Range("A" & Target.Row + 1).Select
           End If
       
    End If

End Sub

 

Bom dia amigo, me atendeu perfeitamente, obrigado pela ajuda e parabéns por seu trabalho.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...