Notifications
Clear all

Substituir macros por macro unica

7 Posts
3 Usuários
0 Reactions
1,247 Visualizações
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Bom dia
Precisava substituir um conjunto de macros, por uma macro unica mas conservando os botões individualizados. :D

 
Postado : 05/02/2015 7:23 am
selmo
(@selmo)
Posts: 236
Estimable Member
 

Na minha opinião, seria algo simplês, ao invés de se utilizar de um mesmo código repetido em X vezes, transforme-a em uma Função, descreva os valores que ela ira receber e o resultado, assim poderá utilizar o mesmo código apenas chamando a função

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 05/02/2015 9:06 am
selmo
(@selmo)
Posts: 236
Estimable Member
 

Comecei a realizar tal coisa quando percebi que precisava repetir o mesmo código para N ações, transformando em função reduzi pela metade o código. Veja se é algo semelhante a isso.

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 05/02/2015 9:09 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Porque vc nunca explica com detalhes o que vc quer?

Nem sempre a bola de cristal funciona.

Vc quer um código único, para poder copiar e colar os botões, e não ter que ficar atualizando os códigos, certo?

Tente assim:

Sub colar_XIS_unica_GT()

Const nome_obj  As String = "Retângulo"
Const desvio    As Long = 6

Dim objeto      As String

ApplicationScreenUpadating = False

objeto = Application.Caller
objeto = Right(objeto, Len(objeto) - Len(nome_obj))

Cells(desvio + CInt(objeto), "R").Value = _
Cells(desvio + CInt(objeto), "L").Value

Range("R1").ClearContents

ApplicationScreenUpating = True

End Sub

Partindo do pressuposto que os botões terão o nome "Retângulo 1", "Retângulo 2" etc.

O que vc precisa fazer é ajustar estas 2 linhas (constantes):

Const nome_obj As String = "Retângulo"
Const desvio As Long = 6

Onde está o "Retângulo", coloque o nome que vc vai dar para os objetos.

No lugar do 6, coloque quantas linhas tem que considerar, por exemplo: se o "Retângulo 1" for preencher a linha 7, então 7 - 1 (retângulo 1) = 6, logo, coloquei 6.

Se fosse na linha 9, seria 8.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 05/02/2015 9:45 am
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Alguma coisa não saiu como o esperado. O 1º botão cola na posição correta os demais... Acho que implementei as instruções corretamente.

 
Postado : 05/02/2015 10:15 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Se vc olhar nos botões...

O primeiro está com o nome "Retângulo 1"
Logo, 1 + 6 = 7, e deu certo.

O segundo, está com o nome "Retângulo 12"
Então, 12 + 6 = 18 - pode ver que lá na linha 18 apareceu o "X"
O nome tinha que ser "Retângulo 2"

O terceiro, nome "Retângulo 2",
Logo, 2 + 6 = 8.
O nome tinha que ser "Retângulo 3"

Essa é a parte que falei que vc tem que tomar cuidado.

Se vc for criando os botões e já for colocando em ordem, não vai ter esse problema.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 05/02/2015 10:20 am
(@dimorais)
Posts: 431
Reputable Member
Topic starter
 

Tem razão. O motivo foi ter feito clone dos botões. :D

 
Postado : 05/02/2015 10:24 am