質問: libreofficeで十字線のように現在の行と列を強調表示するにはどうすればよいですか? 目のガイドとして、libreofficeの十字線のように現在の行と列を強調表示するにはどうすればよいですか? オープン 2011年からの機能リクエスト と非常によく似た質問 openoffice -があるようですが、libreofficeで見つけることができず、現時点ではサポートされていません。 libreofficeにこれを行わせるにはどうすればよいですか?
回答: luppは最近、この動作にマクロを使用するサンプルスプレッドシートを作成しました。 https://forum.openoffice.org/en/forum/viewtopic.php?t=43531#p431848 に投稿されています。しかし、彼は次のように述べています askloで それ: この目的のために「マクロ」を使用することは疑わしいアプローチです。このソリューションは、ハード(直接)セルフォーマットを使用しないシートにのみ適用できます...実際には推奨されません! 唯一の良い解決策は、libreofficeに実装できるかどうかです。しかし、バグレポートで読んだかもしれないように: 経験豊富な開発者の1人と話す...それは簡単な作業ではありません。実装されない可能性があります。 askloでの同じ質問に対する私の回答で述べたように、実用的な解決策は、条件付き書式を使用して奇数行または偶数行に色を追加することです。[〜#〜]編集[〜#〜]:luppの例を最初から再現するには、まずツール->マクロ->マクロの整理-> libreofficebasicに移動します。。odsドキュメントを見つけ、新規を押して新しいドキュメントを作成します。モジュールに入れ、次のコードをモジュールに入れます。_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 _次に、現在のシートのタブを右クリックして、シートイベントを選択します。 onselectionchangedを「選択が変更されました」イベントに割り当てます。また、背景色でスタイルcffocuscrossを作成します。最後に、フォーマット->条件付きフォーマット->管理->追加に移動します。 式はor(row(a1)=rowwithfocuscell();column(a1)=columnwithfocuscell())+n($a$1)*0です スタイルを適用するcffocuscross 範囲_a1:z100_