Форматирование частей текста в ячейке Calc

Автор ArVorozh, 24 июня 2016, 15:27

0 Пользователи и 1 гость просматривают эту тему.

ArVorozh

Столкнулся с проблемой- нужно отформатировать текст в ячейке, но применить формат не ко всему содержимому ячейки, а к части- для примера приложил картинку. В Питоньяке нашел только описание как сделать полужирным/курсивом/поменять цвет только для ячейки целиком. А есть-ли способ форматировать текст выборочно?

JohnSUN

Это не ты спрашивал, нет? Ну, значит закон парности случаев сработал.
Есть такой способ... Ну, в смысле, если руками мы такое сделать можем, значит и программно тоже должно получиться.

Рыть придется в сторону свойства ячейки Text: получить через getText, создать как для обычного текста текстовый курсор и дальше всё как у Питоньяка

Sub formatCell
Dim oCell As Variant
Dim oTCursor As Variant
Dim oText As Variant
Dim oStart As Variant
oCell = ThisComponent.getSheets().getByIndex(0).getCellByPosition(1, 2) ' Для примера B3

oText = oCellByPosition.getText()
oTCursor = oText.createTextCursor()
oStart = oTCursor.getStart() ' Курсор в начало текста, от него и пляшем

oStart.goRight(5, False) ' Тупо на пять символов вправо без выделения
oStart.goRight(5, True) ' И еще на пять, но попутно выделяя
REM Каждый из них вернул бы True/False - получилось или нет сдвинуться дальше.
REM Всё дальнейшее будет относиться к (якобы!) выделенному тексту
oStart.CharHeight = 12.0 ' Ну, это просто размер шрифта
oStart.CharColor = 128 ' Синенький
oStart.CharWeight = com.sun.star.awt.FontWeight.BOLD ' А вот это уже "полужирное начертание"
oStart.CharPosture = com.sun.star.awt.FontSlant.ITALIC ' По имени константы понятно, что произойдёт
End Sub

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ArVorozh

Нет, спрашивал не я. :)
Ок. Попробовал- вроде работает. А гиперссылки примерно таким же способом возможно создавать?

JohnSUN

Примерно таким же. Вообще-то, приемов работы с ними много.
Но я, если речь заходит о гиперссылках в Calc'овских книгах, предпочитаю вписывать в ячейку формулу с функцией HYPER() - и Calc с ней справляется хорошо (если в адресе ошибки нет), и вручную в случае чего отредактировать её просто
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне