Notifications
Clear all

Como usar uma variável Private Sub em outra Sub?

8 Posts
3 Usuários
0 Reactions
1,298 Visualizações
(@ramzero)
Posts: 127
Estimable Member
Topic starter
 

Olá pessoal

Estou aqui novamente, mas aprendendo demais com vocês e este fórum

Gostaria de saber se tem como usar uma variável que está em Private Sub Worksheet_Calculate() em outra Sub?

Exemplo:

A variável Dim i As Long está declarada em Private Sub Worksheet_Calculate() que recebeu o valor de 57

Gostaria de utilizar o valor dessa variável (i) daquele momento (57) em uma outra Sub

É possível isso?

No meu caso declarei outra variável (i) nessa Sub, mas o valor se torna (0) quando ela começa e se não declaro pede pra declarar

Obrigado

 
Postado : 20/02/2018 1:11 pm
Basole
(@basole)
Posts: 487
Reputable Member
 

Declare a variavel "i" fora da Sub Worksheet_Calculate, no topo do vbe, como 1ª linha do codigo.

Ou até mesmo em um modulo padrão, como publica:
Public i As Long

Click em se a resposta foi util!

 
Postado : 20/02/2018 1:25 pm
(@ramzero)
Posts: 127
Estimable Member
Topic starter
 

Fala Basole

Tentei aqui de várias maneiras mas não funcionou

Vamos lá
Na Private Sub Worksheet_Calculate()

Coloco assim?:

Public i As Long

Private Sub Worksheet_Calculate()

Ou assim?:

Dim i As Long

Private Sub Worksheet_Calculate()

E na Sub assim?:

Option Explicit

Public i As Long

Não entendi como faz, ora ele continua atribuindo o valor, ora volta a 0

Se puder me esclarecer agradeço

 
Postado : 20/02/2018 4:03 pm
(@klarc28)
Posts: 971
Prominent Member
 

Tem que ser fora da sub. Insira um módulo e deixe só a declaração da variável Public, sem mais nada. Não declare essa variável dentro de nenhuma Sub. Só a declare no módulo.

 
Postado : 20/02/2018 10:42 pm
(@ramzero)
Posts: 127
Estimable Member
Topic starter
 

Valeu klarc28

Deu certo

O que vocês acham melhor:

Deixar a programação toda em Plan1 ou dividir cada funcionalidade em Sub módulos?

Faz diferença nessas duas formas em como o Excel executa? De qual jeito fica mais rápido?

Obrigado

 
Postado : 21/02/2018 10:50 am
(@ramzero)
Posts: 127
Estimable Member
Topic starter
 

up

 
Postado : 22/02/2018 6:26 pm
(@klarc28)
Posts: 971
Prominent Member
 

Dividir em módulos tem o objetivo organizar código para facilitar a consulta posterior. Não influencia no tempo de execução. Quando o código fica muito grande em um lugar só, dificulta a localização manual de uma parte específica, mas nada que não possa ser resolvido com Ctrl + L. Quando se tem vários formulários ou várias planilhas, ao dividir o código em módulos, algumas partes podem deixar de funcionar. Por exemplo: Um projeto possui dois formulários , UserForm1 e UserForm2, ambos com uma TextBox1. Se tirarmos os códigos dos formulários e colocarmos em módulos, pode dar erro, pois não vai encontrar a TextBox1.

TextBox1.Text = Range("A1").Value

Caixa de texto de qual formulário? Célula A1 de qual planilha?

Para corrigir isso, é necessário colocar o endereço completo:

UserForm1.TextBox1.Text = Plan1.Range("A1").Value

Para quem tem dificuldade em lidar com erros, se está funcionando, é melhor não mexer.
Para quem já sabe lidar com erros e consegue fazer as adaptações no código, é recomendável criar vários módulos com códigos curtos.

 
Postado : 25/02/2018 3:41 am
(@ramzero)
Posts: 127
Estimable Member
Topic starter
 

Entendi Klarc28

Obrigado pela explicação

Abraço

 
Postado : 26/02/2018 5:27 am