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/