Como destacar a linha e coluna atuais como uma cruz no Libreoffice?

4

Como posso destacar a linha e coluna atuais como uma cruz no Libreoffice como guia para o olho?

Parecehaveruma solicitação de recurso aberta de 2011 e uma pergunta muito semelhante para openoffice - mas nada que eu possa encontrar no libreoffice e suportado no momento. Como posso fazer o LibreOffice fazer isso?

    
por Jonas Stein 20.12.2017 / 02:29

1 resposta

3

O Lupp criou recentemente uma planilha de exemplo que usa macros para esse comportamento. Está publicado no link .

No entanto, ele observa em AskLO que:

It's a questionable approach to use "macros" for the purpose. The solution is only applicable to sheets that do not use hard (direct) cell formatting... Not actually recommended!

A única boa solução seria se ela pudesse ser implementada no LibreOffice. Mas como você pode ter lido no relatório de erros:

Talking to one of the experienced developers...it's no trivial task. It might never be implemented.

Como mencionado em minha resposta à mesma pergunta no AskLO, uma solução prática é usar a formatação condicional para adicionar cor a linhas ímpares ou pares.

EDITAR :

Para reproduzir o exemplo de Lupp começando do zero, primeiro vá para Ferramentas - > Macros - > Organize Macros - > LibreOffice Basic. Encontre o documento .ods, pressione Novo para criar um novo módulo e coloque o seguinte código no módulo.

Global focusCellAddressGl As String, columnWithFocusCellGl As Long, rowWithFocusCellGl As Long

Function focusCell(Optional pCtrl) As Object
REM Concept by "uros", "Villeroy"
REM Responsible for this variant: Wolfgang Jäger
REM 2017-09-28 V0
On Error Goto eExit
If IsMissing(pCtrl) Then pCtrl = ThisComponent.CurrentController
If  NOT pCtrl.SupportsService("com.sun.star.sheet.SpreadsheetView") Then Exit Function
    Dim theSheet As Object, fC As Object, sheetNum As Long, sInfo As String, sInfoDelim As String 
    Dim vD, vDSplit, sInfoSplit
vD             = pCtrl.ViewData
vDSplit        = Split(vD, ";")
theSheet       = pCtrl.ActiveSheet's(sheetNum)
sheetNum       = theSheet.RangeAddress.Sheet
sInfo          = vDSplit(sheetNum + 3)
REM For CellAddress.Row >= 8192 the "+" is used as the subdelimiter in ViewData. WHY?
If InStr(sInfo, "+")>0 Then 
    sInfoDelim = "+"
Else
    sInfoDelim = "/"
End If
sInfoSplit     = Split(sInfo, sInfoDelim)
fC             = theSheet.GetCellByPosition(sInfoSplit(0), sInfoSplit(1))
focusCell      = fC
eExit:
End Function 

Function focusCellAddress(Optional pDummy)
On Error Goto eExit
If focusCellAddressGl="" Then onSelectionChanged(NULL)
focusCellAddress=focusCellAddressGl
eExit:
End Function

Function columnWithFocusCell(Optional pDummy)
On Error Goto eExit
If columnWithFocuscellGl=0 Then onSelectionChanged(NULL)
columnWithFocusCell=columnWithFocusCellGl
eExit:
End Function

Function rowWithFocusCell(Optional pDummy)
On Error Goto eExit
If rowWithFocuscellGl=0 Then onSelectionChanged(NULL)
rowWithFocusCell=rowWithFocusCellGl
eExit:
End Function

Sub onSelectionChanged(pEvent)
On Error Goto eExit
tFC=focusCell()
focusCellAddressGl=Split(tFC.AbsoluteName,".")(1)
With tFC.CellAddress
columnWithFocusCellGl=.Column+1
rowWithfocusCellGl=.Row+1
End With
specCell=tFC.Spreadsheet.GetCellByPosition(0,0)
specCell.String = tFC.AbsoluteName
eExit:
End Sub 

Agora, clique com o botão direito do mouse na guia da planilha atual e escolha Sheet Events . Atribuir onSelectionChanged ao evento "Seleção alterada".

Além disso, crie o estilo cfFocusCross com uma cor de plano de fundo.

Por fim, vá para Formatar - > Formatação condicional - > Gerenciar - > Adicionar.

  • A fórmula é OR(ROW(A1)=ROWWITHFOCUSCELL();COLUMN(A1)=COLUMNWITHFOCUSCELL())+N($A$1)*0
  • Aplicar estilo cfFocusCross
  • Intervalo A1:Z100

    
por 20.12.2017 / 04:52