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
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!
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
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.
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
up
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.
Entendi Klarc28
Obrigado pela explicação
Abraço