Pergunte aqui
0

Problema com Variáveis públicas

perguntadas 2019-03-01 21:12:37 +0100

imagem do gravatar de Marco Salles

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

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2019-03-01 22:14:25 +0100

Acho que tem que inverter !

Sub  Exemplo
eNome = "TESTE"
print eNome
End Sub
editar assinalar como ofensivo Excluir Link mais

Comentários

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
imagem do gravatar de Marco SallesMarco Salles ( 2019-03-02 03:24:30 +0100 )editar

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

imagem do gravatar de OlivierOlivier ( 2019-03-02 18:12:59 +0100 )editar

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

imagem do gravatar de Marco SallesMarco Salles ( 2019-03-07 11:55:51 +0100 )editar

@Marco Salles, 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
imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-03-07 14:43:38 +0100 )editar

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

imagem do gravatar de Marco SallesMarco Salles ( 2019-03-07 17:08:35 +0100 )editar

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

Seria individual para cada Documento.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-03-07 17:51:15 +0100 )editar

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

imagem do gravatar de Marco SallesMarco Salles ( 2019-03-08 00:40:14 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-03-01 21:12:37 +0100

Lidas: 18 vezes

Última atualização: Mar 01