Logo Hardware.com.br
Claudao01
Claudao01 Novo Membro Registrado
3 Mensagens 0 Curtidas

[Resolvido] Excel - Única macro executada em várias linhas

#1 Por Claudao01 27/05/2015 - 21:54
Boa noite a todos.
Sou novo na comunidade e preciso de uma certa ajuda.
Há pouco tempo que comecei a mexer com macros no MS Excel e tenho um trabalho a ser feito.

Bom, para começo de conversa, trata-se de uma planilha com 70 linhas no total contendo, em cada linha, um botão [+1] e um botão [-1].
Como um leigo no assunto, criei 70 "macros" customizadas para adicionar 1, e mais 70 para subtrair 1.
Já era esperado que ficasse pesado, e de fato ficou.

Daí veio a dúvida:
É possível criar uma única macro de adição e outra de subtração, para a planilha toda, que reconheça a linha (e possa usar essa referência depois em outra coluna) em que se encontra tal botão, e fazer com que seja executada normalmente?
Acredito que por não precisar de 140 macros, a pasta de trabalho fique bem mais leve e fácil de acessar.
Outro ponto que devo informar é que usarei uma célula como botão, não necessariamente uma forma.

Agradeço a atenção de todos.
Forte abraço.

_____________________

Exemplo do que fiz:

Subtração:
Sub diminuiUmG1() //Até o G70
Range("$G$1 ").Value = Range("$G$1").Value - 1
End Sub

Adição:
Sub somaUmG1() //Até o G70
Range("$G$1").Value = Range("$G$1").Value + 1
End Sub
Walhart
Walhart Super Participante Registrado
185 Mensagens 65 Curtidas
#2 Por Walhart
28/05/2015 - 15:43
Oi Claudao01.

Primeiramente, não acho que as 138 macros a mais que vc criou deixaram o arquivo pesado. Pelo que sei, o volume de macros não tem tanto peso no tamanho final do arquivo.

Segundamente, já fiz isso várias vezes de maneiras diferentes e de fato vc só precisa de duas macros, uma de Adição e outra de Subtração.

Como vc está usando a célula como botão?
Com hyperlink?
Claudao01
Claudao01 Novo Membro Registrado
3 Mensagens 0 Curtidas
#3 Por Claudao01
30/05/2015 - 17:22
Boa noite, Walhart.

Bom, buscando auxílio em um grupo no Facebook, me responderam com os seguintes procedimentos.
Só que não estou conseguindo assimilá-las às células para efetuar teste.

Essa faria mudar o valor em uma única célula:
Sub AdicionarSelecionado()
Dim Cell As Range
For Each Cell In Selection
Cell.Value = Cell.Value + 1
Next
End Sub

Essa faria mudar todos os valores entre G1 e G70:
Sub Adicionar()
Dim Cell As Range
For Each Cell In Range("G1:G70")
Cell.Value = Cell.Value + 1
Next
End Sub

Minha ideia, desde que fiz este post, mudou um pouco.
Se eu conseguir adicionar +1 em uma célula selecionada de coluna H, por exemplo, e subtrair -1 em outra de coluna I, poderei um =SOMA na coluna G para chegar no valor que desejo.
Mas o problema mesmo agora é conseguir ligar essa macro nas células corretas.
Parece meio doido, mas acho um pouco mais viável. big_green.png
Enival Bento
Enival Bento Novo Membro Registrado
16 Mensagens 2 Curtidas
#5 Por Enival Bento
02/06/2015 - 19:02
Claudao01 disse:
Boa noite a todos.
Sou novo na comunidade e preciso de uma certa ajuda.
Há pouco tempo que comecei a mexer com macros no MS Excel e tenho um trabalho a ser feito.

Bom, para começo de conversa, trata-se de uma planilha com 70 linhas no total contendo, em cada linha, um botão [+1] e um botão [-1].
Como um leigo no assunto, criei 70 "macros" customizadas para adicionar 1, e mais 70 para subtrair 1.
Já era esperado que ficasse pesado, e de fato ficou.

Daí veio a dúvida:
É possível criar uma única macro de adição e outra de subtração, para a planilha toda, que reconheça a linha (e possa usar essa referência depois em outra coluna) em que se encontra tal botão, e fazer com que seja executada normalmente?
Acredito que por não precisar de 140 macros, a pasta de trabalho fique bem mais leve e fácil de acessar.
Outro ponto que devo informar é que usarei uma célula como botão, não necessariamente uma forma.

Agradeço a atenção de todos.
Forte abraço.

_____________________

Exemplo do que fiz:

Subtração:
Sub diminuiUmG1() //Até o G70
Range("$G$1 ").Value = Range("$G$1").Value - 1
End Sub

Adição:
Sub somaUmG1() //Até o G70
Range("$G$1").Value = Range("$G$1").Value + 1
End Sub


Você já tentou assim?

Anexo do post

Anexos

© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal