Ir ao conteúdo
  • Cadastre-se

usar mesma macro para 2 botões trocando apenas valor de variavel.


edcronos

Posts recomendados

tenho uma macro meio grande que muda apenas o valor de 2 variaveis

A macro é chamada através de um UserForm

 

Então em vez de fazer uma macro para cada botão, gostaria de chamar a mesma macro com diferentes botões e dependendo do botão mudasse a variavel

 

tipo:

Sub macro()

se botão1 n=1 e R=-1

se botão2 n=-2 e R=1

codigo

end sub

 

pode ser com botão de rotação tambem "ou algo que me ajude a entender como se usa isso"

Link para o comentário
Compartilhar em outros sites

Você pode colocar a macro dentro de um módulo (por exemplo Macro1) e definir as variáveis como globais,

 

dentro do botão 1 (no click) você coloca

 

Sub cmb_opcao1_click()

 

n = 1 'Variável que você definir

R= -1  'Variável que você definir

Call Macro1

 

end sub

 

 

 

no botão 2

 

 

 

Sub cmb_opcao2_click()

 

n = -2 'Variável que você definir

R= 1  'Variável que você definir

Call Macro1

 

end sub

 

 

Qualquer coisa entre em contato!!!

Link para o comentário
Compartilhar em outros sites

Você pode colocar a macro dentro de um módulo (por exemplo Macro1) e definir as variáveis como globais,

 

dentro do botão 1 (no click) você coloca

 

Sub cmb_opcao1_click()

 

n = 1 'Variável que você definir

R= -1  'Variável que você definir

Call Macro1

 

end sub

 

 

 

no botão 2

 

 

 

Sub cmb_opcao2_click()

 

n = -2 'Variável que você definir

R= 1  'Variável que você definir

Call Macro1

 

end sub

 

 

Qualquer coisa entre em contato!!!

Já estou usando assim, não tem uma maneira mais direta ?

"para falar a verdade todas as minhas macros são assim, uma chama a outra, tanto é que tem 23 variaveis publicas"

 

pensei em usar aquele SpinButton e cada lado definiria valores diferentes nas variaveis, mas não entendi nada do que achei para aplicar na macro,

Esse Call é necessario? não estou usando

 

Private Sub esque_Click()

Ab = 1

Ac = -1

Ma = 0

Lado_Click

End Sub

 

é o numero de variaveis já aumentou

Obrigado.

 

Link para o comentário
Compartilhar em outros sites

Call não é necessário, só uso para saber que estou chamando uma macro sem ter que ficar digitando comentário, quando ao spin você pode usar sim

 

 

mas de qualquer forma vai ter que utilizar as variáveis globais mas dessa forma teria apenas 1 controle, que no caso é o spin

 

Usa assim dentro do spin:

'Dentro do inicializate do userform que estiver o spinbutton'    SpinButton1.Min = 0 'valor menor que sua variável terá'    SpinButton1.Max = 100 ' maior valor da variável''Caso deseja colocar um valor inicial'      SpinButton1.Value = 50' dentro do evento change do spinbutton você pode colocar assim'     variávelglobal = spinbutton1.value' ou então acrescentar ou diminuir dentro de uma textbox utilizando o spindown ou spinup por exemplo (dentro do ação SpinDown ou SpinUp)'     Private Sub SpinButton1_SpinDown()     TextBox1.Text = Val(TextBox1.Text) - 1     End Sub' OU'     Private Sub SpinButton1_SpinUp()     TextBox1.Text = Val(TextBox1.Text) + 1     End Sub
Link para o comentário
Compartilhar em outros sites

os valores das variaveis são fixos cada botão tem que trocar valor de 3 variaveis que definem o movimento.

 

tipo

if button = spinbutton1 then Ab = 1: Ac = -1: Ma = 0

desculpe as "vezes" eu sou meio burro para entender as coisas.

 

Sei que se os botõe fosem na planilha daria para usar o ButtonID, mas em um UserForm não tenho a menor ideia.

 

Se não tiver jeito "OU" for mais complicado que chamar a macro principal pelas macros dos botões vou continuar a usar do jeito que estou, mas vou colocar a sua como resposta porque foi algo a mais para aprender.

Link para o comentário
Compartilhar em outros sites

Bem a macro é essa aí, mas acho que vou ter que usar do jeito que está,

 

Private Sub Sob_Click()
Ab = -1: Ac = 1: Ma = 1: Lado_Click
End Sub
Private Sub Desc_Click()
Ab = 1: Ac = -1: Ma = 1: Lado_Click
End Sub
Private Sub dire_Click()
Ab = -1: Ac = 1: Ma = 0: Lado_Click
End Sub
Private Sub esque_Click()
Ab = 1: Ac = -1: Ma = 0: Lado_Click
End Sub


Private Sub Lado_Click()
Planilha = ActiveSheet.Name
If Planilha <> "Fixa" Then
Dim Mi As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

If inver1 = True Then N = Ac Else N = Ab
If Loc1 <> "" And Loc1 <> "Tudo" Then: Application.Run Loc1: GoSub Lad1

If inver2 = True Then N = Ac Else N = Ab
If (Loc2 <> "") And (Loc2 <> "Tudo") Then: Application.Run Loc2: GoSub Lad1

If inver3 = True Then N = Ac Else N = Ab
If (Loc3 <> "") And (Loc3 <> "Tudo") Then: Application.Run Loc3: GoSub Lad1

If (Loc1 = "Tudo" Or Loc2 = "Tudo" Or Loc3 = "Tudo") And Ma = 0 Then
N = Ab
Mi = 0
....varios codigos e chamadas
End If
End If

 Exit Sub
Lad1:
If Ma = 0 Then Mi = 0: L = N
If Ma = 1 Then Mi = N: L = 0
            Range(Ci & Li, Cf & Lf) = Range(Ci & Li, Cf & Lf).Offset(Mi, L).Value
            Range(Cf & Li, Cf & Lf).Offset(0, 1) = Range(Ci & Li, Ci & Lf).Value
            Range(Ci & Li, Ci & Lf).Offset(0, -1) = Range(Cf & Li, Cf & Lf).Value
Return
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

 

bem ainda estou ajustando, sei que está bem bagunçado mas até que funciona."menos a parte do tudo que tem uma macro com esse nome e insiste em executar ela"
Edit:  if or and não está funcionando "???"

 

Bem, creio que sobre os botões achei a solução:

 

http://www.ambienteoffice.com.br/officevba/usar_um_procedimento_para_varios_controles_de_um_formulario/

 

mas estou com muitos outros problemas na mesma macro "nos meus conhecimentos" :(, não consigo fazer IF AND OR THEN funcionar corretamente, e não estou conseguindo definir matrizes.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...