Pergunte aqui
0

Usar intervalo nomeado em um código de Basic? Calc

perguntadas 2019-02-10 21:02:23 +0200

imagem do gravatar de mrkalvin

updated 2019-03-01 18:02:45 +0200

Tenho um documento do Calc que executa uma código em Libreoffice Basic que esta atrelada ao "Eventos de planilha --> Conteúdo Alterado" quando o conteúdo da célula D1 na planilha2 for modificado.

Sub CelulaAlterada(oCelula)
    ' Testar se o objeto selecionado é uma célula individual'
    if oCelula.ImplementationName <> "ScCellObj" Then Exit Sub
    if Right(oCelula.AbsoluteName,4) = "$D$1" Then
        'Chamar a macro desejada'
        Call CalcularMoonPhases 
    End if
End Sub

Mas essa célula "D1" está nomeada com o nome "Config_Ano". Eu poderia usar este nome "Config_Ano" no código do Libreoffice Basic no lugar de "$D$1" ? Como fazer isso nessa situação?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

Eu trocaria "$D$1" por "Config_Ano" e acionava a Macro para ver o que acontece.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-02-10 23:05:14 +0200 )editar

1 Resposta

0

respondidas 2019-02-10 23:23:56 +0200

imagem do gravatar de mrkalvin

updated 2019-02-10 23:57:29 +0200

Consegui fazer o que precisava não sei se é a melhor forma. funcionou com um intervalo nomeado de apenas uma célula. Quem quiser conferir tá aí:

Sub CelulaAlterada(oCelula)
    ' Testar se o objeto selecionado é uma célula individual'
    If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub

    '//---------------------------'
    'Manipula o intervalo nomeado em questão "Config_Ano" '
    oDoc = ThisComponent
    oRange = oDoc.NamedRanges.getByName("Config_Ano")
    oCell = oRange.ReferredCells.getCellByPosition(0,0)

    'Nome absoluto da célula do intervalo nomeado no caso: $Planilha2.$D$1'
    nomeIntervaloNomeado = oCell.AbsoluteName
    '//---------------------------'

    If oCelula.AbsoluteName = nomeIntervaloNomeado Then
        'Chamar a macro desejada'
        Call CalcularMoonPhases

        'se quiser saber conteúdo da célula do intervalo nomeado'
        valorIntervaloNomeado = oCell.Value
        msgbox valorIntervaloNomeado
    End If  
End Sub

Agora eu posso recortar e colar a célula do intervalo nomeado em qualquer local da mesma planilha e a macro vai funcionar. Também posso renomear a planilha sem ter que fazer alteração no código da macro. Se alguém tiver uma sugestão mais adequada estou aceitando

Deixei no msgbox como pegar o valor da céĺula com o intervalo nomeado caso seja útil pra outros usuários. Obrigado.

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-02-10 21:02:23 +0200

Lidas: 31 vezes

Última atualização: Feb 10