Opa, tem um erro delicado aí na macro, o correto seria:

REM  *****  LIBREOFFICE BASIC  *****
REM O objetivo dessa função é aplicar cor par/impar para
REM cada linha da tabela. O intuito é evitar enganos por seguir
REM um valor numa determinada linha e pêrde-la de vista.
REM O funcionamento é simples, apenas selecione a área que
REM deseja zebrar e aplique essa macro.
REM Ajuste as variaveis nZebra1 e nZebra2
REM Autor: Gladiston Hamacker Santana <sirhamacker[em]gmail.com>
Sub ZebrarTabela
  Dim oCurrentSelection As Variant
  Dim oRows As Variant
  Dim oCols As Variant
  Dim oCell  As Variant
  Dim Li As Long
  Dim Ci As Long
  Dim nRow As Long
  ' Uma boa idéia de cores que podem ser usadas, podem ser encontradas nos
sites:
  ' http://www.htmlgoodies.com/tutorials/colors/article.php/3478961
  ' http://erikasarti.net/html/tabela-cores/
  ' http://domingoscsouza.com.br/blog/front-end/tabela-de-cores-html
  ' Valores em hexa devem ser precedidos por &H
  Const nZebra1 = &HFFEFD5  'PapayaWhip #FFEFD5
  Const nZebra2 = &HFFFFE0  'LightYellow #FFFFE0

  oCurrentSelection = ThisComponent.getCurrentSelection()
  If oCurrentSelection.supportsService("com.sun.star.table.CellRange") Then
      oRows = oCurrentSelection.getRows()
      oCols = oCurrentSelection.getColumns()
      For Li = 0 To oRows.getCount()-1
        For Ci = 0 To oCols.getCount()-1
          oCell = oCurrentSelection.getCellByPosition(Ci, Li)
          nRow = oCell.RangeAddress.StartRow
          If (nRow Mod 2) = 0 Then
            oCell.setPropertyValue("CellBackColor", nZebra1)
          Else
            oCell.setPropertyValue("CellBackColor", nZebra2)
          EndIf
        Next Ci
      Next Li
  EndIf
End Sub



Em 25 de março de 2015 11:13, hamacker <sirhamac...@gmail.com> escreveu:

> Fiz do jeito mais difícil, peguei um exemplo básico de macro que contava
> linhas pares e ímpares e com a ajuda do google descobri funções de
> formatação, dai consegui fazer o que já fazia com uso de estilos que você
> descreveu.
> Minha frustração é que não consigo criar um botão/atalho para executar
> essa macro. Para executá-la é um esforço heroico de
> Ferramentas->Macro->Executar->Arvore1->SubArvore2->SubArvore3 e selecionar
> a macro e então executar. Fico pensando se o time do LibreOffice sabe o
> quão complicado é usar macros no editor. Além disso, enquanto aprendia a
> criar a macro, erros na macro (erro de programador principiante) travaram o
> LibreOffice inteirinho.
>
> Ah também não dá para fazer uma janela de dialogo para selecionar uma cor,
> senão teria colocado no script.
> Minhas duas frustrações com o uso de macro.
> Vou tentar abrir um ticket e ver se eles poderiam incluir um modo de visão
> assim, que apresentasse a janela em modo zebrado e grifando o eixo X e Y
> onde o cursor estiver posicionado, pois isso ajuda bastante a focar.
>
> REM  *****  LIBREOFFICE BASIC  *****
> REM O objetivo dessa função é aplicar cor par/impar para
> REM cada linha da tabela. O intuito é evitar enganos por seguir
> REM um valor numa determinada linha e pêrde-la de vista.
> REM O funcionamento é simples, apenas selecione a área que
> REM deseja zebrar e aplique essa macro.
> REM Ajuste as variaveis nZebra1 e nZebra2
> REM Autor: Gladiston Hamacker Santana <sirhamacker[@]gmail.com>
> Sub ZebrarTabela
>   Dim oCurrentSelection As Variant
>   Dim oRows As Variant
>   Dim oCols As Variant
>   Dim oCell  As Variant
>   Dim Li As Long
>   Dim Ci As Long
>   ' Uma boa idéia de cores que podem ser usadas, podem ser encontradas nos
> sites:
>   ' http://www.htmlgoodies.com/tutorials/colors/article.php/3478961
>   ' http://erikasarti.net/html/tabela-cores/
>   ' http://domingoscsouza.com.br/blog/front-end/tabela-de-cores-html
>   ' Valores em hexa devem ser precedidos por &H
>   Const nZebra1 = &HFFEFD5  'PapayaWhip
>   Const nZebra2 = &HFFFFE0  'LightYellow
>
>   oCurrentSelection = ThisComponent.getCurrentSelection()
>   If oCurrentSelection.supportsService("com.sun.star.table.CellRange") Then
>       oRows = oCurrentSelection.getRows()
>       oCols = oCurrentSelection.getColumns()
>       For Li = 0 To oRows.getCount()-1
>         For Ci = 0 To oCols.getCount()-1
>           oCell = oCurrentSelection.getCellByPosition(Ci, Li)
>              If (Li Mod 2) = 0 Then
>                oCell.setPropertyValue("CellBackColor", nZebra1)
>              Else
>                oCell.setPropertyValue("CellBackColor", nZebra2)
>              EndIf
>         Next Ci
>       Next Li
>   EndIf
> End Sub
>
>
>
>
> Em 24 de março de 2015 18:35, João Mac-Cormick <joao.corm...@gmail.com>
> escreveu:
>
> Neste caso, eu costumo fazer o seguinte, para ter o efeito "zebrado":
>>
>> 1) Criar um estilo
>> "Formatar--> Estilos e Formatação"
>> Com o botão direito do mouse, clique no estilo "Padrão" e selecione
>> "Novo…"
>> Na aba "Organizador", na caixa Nome, digite "cinza"
>> Na aba "Plano de fundo", clique na cor "cinza 3"
>> Salve este estilo de célula.
>>
>> 2) Criar uma formatação condicional
>> Formatar--> Formatação condicional--> Gerenciar…
>> Clique no botão "Adicionar"
>> Na "Condição 1"
>>   Selecione a opção "A fórmula é"
>>   Digite a fórmula ÉÍMPAR(LINHA())
>>   Selecione o estilo criado anteriormente em "Aplicar estilo"
>> Lá embaixo, na caixa "Intervalo:", digite o tamanho que sua planilha
>> poderá ter, por exemplo "A1:Z9999"
>> Clique no botão "OK"
>> Clique no botão "OK", novamente
>>
>> E se a planilha aumentar? Basta modificar apenas o intervalo.
>>
>> Fiz estes passos aqui na versão 4.4.1, e funcionou.
>>
>> Mas acho que você já fez isso também, certo?
>>
>> Saudações solidárias,
>>
>> João
>>
>> Em 24 de março de 2015 17:50, hamacker <sirhamac...@gmail.com> escreveu:
>>
>>> Sim, isso é o básico.
>>> A intenção é apenas ver zebrado, não necessariamente formatar as linhas.
>>> Como eu havia dito, não quero deixar a tabela mais bonita, apenas evitar
>>> confusão quando estiver perseguindo dados com os olhos.
>>>
>>> Em 24 de março de 2015 17:45, João Mac-Cormick <joao.corm...@gmail.com>
>>> escreveu:
>>>
>>>> Você já usou a opção "Janela--> Congelar"? Dependendo das colunas
>>>> iniciais da planilha, ajuda bastante.
>>>>
>>>> Em 24 de março de 2015 17:22, hamacker <sirhamac...@gmail.com>
>>>> escreveu:
>>>>
>>>>> Alguém aí sabe como fazer o Calc exibir linhas em cores diferentes ou
>>>>> zebradas.
>>>>> Não quero uma célula em cor diferente, pois assim apenas usaria a
>>>>> formatação condicional.
>>>>> Mas gostaria que as linhas fossem intercaladas em cores diferentes para
>>>>> melhorar a exibição e evitar equívocos de olhar para uma célula e
>>>>> quando
>>>>> deslocar o olho para a direita então pular a linha e apontar valores
>>>>> errados.
>>>>>
>>>>> Hoje estou usando estilos, cada linha aplico um estilo, mas é bobagem
>>>>> porque de fato o objetivo não é deixar a planilha mais bonita, mas
>>>>> evitar
>>>>> equívocos ao seguir uma linha.
>>>>>
>>>>> Estava tentando isso com formatação condicional, mas não consegui,
>>>>> aparentemente o estilo só pode ser aplicado a célula e não uma linha
>>>>> inteira.
>>>>>
>>>>> Se alguém tiver alguma dica, por favor, compartilhe.
>>>>>
>>>>> --
>>>>> Você está recebendo e-mails da lista usuarios@pt-br.libreoffice.org
>>>>> # Informações sobre os comandos disponíveis (em inglês):
>>>>>   mande e-mail vazio para usuarios+unsubscr...@pt-br.libreoffice.org
>>>>> # Cancelar sua assinatura: mande e-mail vazio para:
>>>>>   usuarios+unsubscr...@pt-br.libreoffice.org
>>>>> # Arquivo de mensagens:
>>>>> http://listarchives.libreoffice.org/pt-br/usuarios/
>>>>>
>>>>
>>>>
>>>
>>
>

-- 
Você está recebendo e-mails da lista usuarios@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para usuarios+unsubscr...@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
  usuarios+unsubscr...@pt-br.libreoffice.org
# Arquivo de mensagens: http://listarchives.libreoffice.org/pt-br/usuarios/

Responder a