Problema com Variáveis públicas

Boa tarde

O que estou fazendo de errado

Tenho Uma Macro Simples e UmaVariavel Publica

  Sub  Exemplo


   print eNome


    eNome = "TESTE"

 End Sub

O que esta ocorrendo é que chamo esta Macro No Evento de um Botão

A primeira vez Printa vazio ( a variavel eNome ainda não foi cetada )

Clico novamente e tb Printa Vazui , como se fosse outra Variavel ou o escopo desta Variavel fosse Local

Mas defini-a como Public

 public eNome As String

O que estou fazendo de errado

Obg

Acho que tem que inverter !

Sub  Exemplo
eNome = "TESTE"
print eNome
End Sub

Ai não é publica

Ai sempre dará teste

Pois vc esta definindo_a

a questão é do jeito que postei mesmo

como o escopo não é local na segunda vez tinha que dar TESTE

   Sub  Exemplo


        print eNome


        eNome = "TESTE"

  End Sub

Onde vc inicializa a variável eNome? Convém não deixar sem inicialização.

Obrigado Gilberto mas estou ate hj sem entender o funcionamento de variáveis públicas

Na minha nocão de programação ela ser Publica a visibilidade dela é em qualquer Macro

e se em uma Macro (associado a um EVENTO ou AÇÂO de PLANILHA ) eu altera-la

e posteriormente em outra MACRO tentar recuperar seu valor , eu obterei o Ultimo Valor
Atribuido

Mas infelizmente so OBTENHO VAZIO

O que que tenho que fazer … acho muito simples e lógico isso para não ter efeito no LivreOffice

Obg

@MarcoSalles, parece que com definição Global funciona.

Só para testar através de outra macro digito em uma célula.
.

Option Explicit
Global eNome As String
    
    Sub  Exemplo
        print eNome
        eNome = "TESTE"
        
        Call Digitar
        
    End Sub
    
    '================================================|
    sub Digitar
    '================================================|
    document  = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "StringName"
    args1(0).Value = eNome
    dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
    end Sub

A variável Global não serve . Pq ela vive por toda a sessão do Libreoffice … Cada Documento que tiver aberto compartilha o mesmo valor da variavel. Eu gostaria de um valor para cada Documento

obg Gilberto

E se colocar esse valor em uma célula e a macro pegar ela ?

Seria individual para cada Documento.

Boa noite Gilberto . Na célula seria sim . (individual para cada documento )
Na realidade estava desenvolvendo algo que me indicasse que o documento foi alterado
Estava programando no evento da planilha ( Modificação) . . Ao modificar uma célula , é disparado o evento .Ai eu modificaria o valor de uma variavel que depois eu leria na hora de salvar

Usando variavel pública ela se perde . Usando Variavel Global ela fica igual para todos os documentos

obg