Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

178
Visualizações
Configuración de variables públicas en VBA Excel

Estoy creando variables públicas en mi programa para usarlas en varios subs del módulo.

 Public c As Range, wsSrc As Worksheet, wsDest As Worksheet, cDest As Range

Sin embargo, también quiero que estas variables tengan el siguiente valor en toda la función

 Set wsSrc = Workbooks("SourceBook").Worksheets("SourceSheet") Set wsDest = Workbooks("DestBook").Worksheets("DestSheet")

¿Hay alguna manera de que pueda configurarlos y que sus valores se trasladen a toda la función? También para c y cDest, los estoy cambiando en las funciones, por lo que no quiero que se definan globalmente. Solo wsSRC y wsDest . ¿Las variables en VBA son inmutables?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Esta es una cuestión de alcance. Para usar variables en un módulo, no es necesario configurarlas como públicas: Public se usa para hacer que las variables estén disponibles para otros módulos.

En este caso, solo necesita declarar variables fuera de la función.

 'Module begining Dim wsSrc As Worksheet, wsDest As Worksheet Function f1 Dim c As Range, cDest As Range '... wsSrc and wsDest are acessible, eg: Set c = wsSrc.Columns(2).Find(What:="Commercial Income", LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False) End Function Function f2 '... wsSrc and wsDest are also acessible here End Function

Sin embargo, para evitar problemas de inicialización, puede usarlos como propiedades, por lo que cada vez que se llaman, el valor se devuelve correctamente:

 'Module begining Property Get wsSrc As Worksheet Set wsSrc = Workbooks("SourceBook").Worksheets("SourceSheet") End Property Property Get wsSrc As Worksheet Set wsDest = Workbooks("DestBook").Worksheets("DestSheet") End Property Function f1 Dim c As Range, cDest As Range '... wsSrc and wsDest are acessible End Function Function f2 '... wsSrc and wsDest are also acessible here End Function
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda