Wie markiere ich die aktuelle Zeile und Spalte wie ein Fadenkreuz in Libreoffice?

1074
Jonas Stein

Wie kann ich die aktuelle Zeile und Spalte wie ein Fadenkreuz in Libreoffice als Orientierungshilfe für das Auge markieren?

Fadenkreuz in Libreoffice

Offenbar gibt es eine Anfrage für ein offenes Feature aus dem Jahr 2011 und eine sehr ähnliche Frage für openoffice - aber nichts, was ich im Moment auf libreoffice finden und unterstützen kann. Wie kann ich LibreOffice dazu bringen?

4

1 Antwort auf die Frage

3
Jim K

Lupp hat kürzlich eine Beispielkalkulation erstellt, die Makros für dieses Verhalten verwendet. Es ist auf https://forum.openoffice.org/de/forum/viewtopic.php?t=43531#p431848 veröffentlicht .

Er bemerkt jedoch bei AskLO :

Es ist ein fragwürdiger Ansatz, "Makros" für diesen Zweck zu verwenden. Die Lösung ist nur für Tabellen anwendbar, die keine harte (direkte) Zellformatierung verwenden. Nicht wirklich empfohlen!

Die einzige gute Lösung wäre, wenn sie in LibreOffice implementiert werden könnte. Aber wie Sie vielleicht im Fehlerbericht gelesen haben:

Mit einem der erfahrenen Entwickler sprechen ... es ist keine triviale Aufgabe. Es könnte niemals umgesetzt werden.

Wie in meiner Antwort auf dieselbe Frage in AskLO erwähnt, besteht eine praktische Lösung darin, die bedingte Formatierung zu verwenden, um ungeraden oder geraden Zeilen Farbe hinzuzufügen.

BEARBEITEN :

Um das Beispiel von Lupp von Grund auf zu reproduzieren, gehen Sie zuerst auf Extras -> Makros -> Makros verwalten -> LibreOffice Basic. Suchen Sie das ODS-Dokument, drücken Sie Neu, um ein neues Modul zu erstellen, und fügen Sie den folgenden Code in das Modul ein.

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  

Klicken Sie nun mit der rechten Maustaste auf die Registerkarte des aktuellen Arbeitsblatts und wählen Sie Arbeitsblattereignisse . Ordnen Sie onSelectionChangeddas Ereignis "Auswahl geändert" zu.

Erstellen Sie außerdem einen Stil cfFocusCrossmit einer Hintergrundfarbe.

Gehen Sie schließlich zu Format -> Bedingte Formatierung -> Verwalten -> Hinzufügen.

  • Formel ist OR(ROW(A1)=ROWWITHFOCUSCELL();COLUMN(A1)=COLUMNWITHFOCUSCELL())+N($A$1)*0
  • Stil anwenden cfFocusCross
  • Angebot A1:Z100

Tabelle mit hervorgehobenen Zeilen und Spalten

Ich schlage vor, den vollständigen Code hier hinzuzufügen, da Benutzer die sx-Seite wahrscheinlich noch besuchen werden, wenn das Forum bereits verschoben wurde, die Software gewechselt wurde oder die URL leer ist. Jonas Stein vor 6 Jahren 0
@ Jonas Stein: OK, Code wurde zusammen mit Anweisungen hinzugefügt. Jim K vor 6 Jahren 0