localc 스프레드 시트에서 셀 텍스트를 수동으로 편집하고 일부 텍스트를 굵게, 기울임 꼴 또는 다른 것으로 표시 할 수 있음을 알고 있습니다.Libreoffice Calc Basic에서 셀 텍스트의 일부를 굵게 표시합니까?
매크로를 사용하여 동일한 작업을 수행하고 싶습니다. 특정 셀에 삽입되는 요약 문자열을 작성합니다.
카테고리 1 : 요약 문자열이 같은 여러 줄이 들어, 항목 2 항목 1을 항목 3
구분 2 : 항목 1, 항목 2, ...
CategoryN : 항목 1, 항목 2, ...
주어진 카테고리가 비어 있는지 여부에 따라 셀의 ~ 4 ~ 12 개의 카테고리 행이있을 수 있습니다.
내가해야 할 기능은 작동하고 있으며, 지금까지 내가 원하는 것입니다. 하지만 지금은이 같은 셀의 「카테고리」부분을 굵게하려면 :
카테고리 1 : 항목 1을 항목 2, 항목 3
구분 2 : 항목 1, 항목 2 .. .
CategoryN : 항목 1, 항목 2, ...
LO 기본에서 이것을 할 수 있습니까? 셀에서 수동 편집을 수행하는 것이 가능하다는 것을 알고 있지만,이 작업은 스크립팅의 전체 목적을 무효화합니다.
이
내가 (이름이 "셀"이상하게도)를 요약 문자열을 구축하고 셀 객체에 삽입 함수의 맨 아래에 지금까지 무엇을 가지고 : 일부newline = chr(10)
cell = ThisComponent.Sheets.getByName("Summary").getCellRangeByName("Skills")
Dim next_nl as Integer
Dim next_colon as Integer
Dim TC as Object ' TextCursor object pointing into the cells text
TC = cell.createTextCursor
next_nl=1 ' start at first char of cell
While (next_nl > 0)
TC.collapseToStart
TC.gotoStart(false) ' move to start of cell
if (next_nl > 1) Then TC.goRight(next_nl, false) ' move to next_nl
TC.goRight(0,true) ' begin selection
next_colon = InStr(next_nl, cell.String, ":")
If next_colon Then
TC.goRight(next_colon, true) ' extend selection to next colon
TC.CharWeight = com.sun.star.awt.FontWeight.BOLD ' bold the selection
next_nl = InStr(next_colon, cell.String, newline) ' jump to the next LF
Else
next_nl = 0 ' no more colons to be found, finish up.'
Endif
Wend
그것을 공장. 첫 번째 줄에는 범주 굵게 및 항목 일반 텍스트가 있습니다. 지금까지 완벽 해.
불행히도, 두 번째 줄의 시작부터 두 번째 줄의 중간까지 (어쩌면 무엇이 이상한가)는 완전히 굵은 글씨입니다. 아마도 Instr()
이 혼합 형식 텍스트로 제대로 작동하지 않을 것으로 의심됩니다. 문자 수가 잘못 계산됩니다.
다른 것들 내가 해봤/아이디어 :
나는 CR
chr(13)
보다는 LFchr(10)
검색을 시도했다 그러나 그것은 전혀 작동하지 않았다. MS-DOS CR 라인 엔딩을 사용하기를 기대했지만 적절한 유닉스 LF 라인 엔딩을 사용합니다 (라인 사이에 CR을 추가하더라도 LF로 변환됩니다). Linux에서 실행 중이므로이 작업을 수행 할 때 실행 환경을 감지하고 Linux, Windows 등의 적절한 줄 끝 스타일을 사용해야합니다.모든 패스에서 다시 초기화해야 할 경우에 대비하여 while 루프 안에
Tc=cell.createTextCursor
을 이동 시키려고했습니다.아무런 차이가 없으므로 동일한 결과를 얻을 수 있습니다.AFAICT, 커서에 '재설정 선택'유형 기능이없는 것처럼 보입니다.
어쩌면 몇 가지 이상한 변수 범위 문제가 있습니다.하지만 LO에서 변수 범위에 대한 지식이 거의 없기 때문에 LO 매크로에 익숙하지 않습니다. 주로 sh, awk, perl 또는 파이썬, 그리고 내가 Basic에서 무엇을 쓴 마지막 시간은 1980 년대로 거슬러 올라간다.
나는 위의 내용이 문제에 대한 좋은 접근 방법이 아닌 것인지 잘 모르겠다. 문서를 검색 할 때 가장 먼저 생각한 것일뿐입니다. 필자는 필요한 경우 더 좋은 아이디어로 시작하는 것보다 더 기쁩니다.
"스킬"이라는 이름의 범위는 LF가 포함 된 하나의 큰 긴 문자열이 아니라 카테고리 당 하나의 셀이어야한다고 생각하기 시작했습니다. 그런 다음 개별적으로 반복 할 수 있습니다. 그렇게하면 스프레드 시트의 다른 부분을 상당히 변경해야하므로 필자는 꼭 그렇게하지 않으려 고하지 않습니다.
추신 : 나는 알고있다 ... 나는 완벽 주의자이다. 카테고리 이름을 대문자로하면 효과가 있지만 (실제로는 그렇다) 추악하다. 그것들을 묶는 것은 훨씬 더 좋을 것입니다 ... 그리고이 요약 페이지의 목적은 예쁜 프레젠테이션을위한 것입니다.
친애하는 익명 downvoter -이 Q는 스프레드 시트에 삽입되는 프로그래밍 언어에 관한 것입니다. 하지만 여전히 프로그래밍 문제입니다. 응용 프로그램 사용 질문이 아니라 셀 수식이나 다른 수퍼 유저 질문이 수퍼 유저 나 헬프 데스크에 더 적합합니다. 그것이 Basic에 있더라도 프로그래밍입니다. 스프레드 시트에서. SO에 관한 "장난감"과 같은 언어에 관한 다른 질문은 많이 있습니다. – cas
다소 긴 질문 이었기 때문에 다운 된 것일까 요? 그것은 나에게 잘 보인다. 자세한 내용은 도움이됩니다. –
예, 질문자가 자신을 알아 내려고 시도했음을 보여주고 그들이하려고하는 것과 같은 유용한 세부 정보를 제공한다고 표시하면 질문에 대답하는 경향이 더 커집니다 (XY 문제이거나 더 나쁜 경우에는 "WTF ? "). – cas