Bigor
|
Вот и на "родном" SB Sub Test_Borders Dim aBorder, oRange, oDoc, oSheets Dim TableBorder As New com.sun.star.table.TableBorder Dim aTopLine As New com.sun.star.table.BorderLine
oDoc = ThisComponent oSheets = oDoc.Sheets(0) oRange = oSheets.getCellRangeByPosition(0,0,5,5) aBorder = oRange.TableBorder aTopLine.OuterLineWidth = 20 ' это толщина внешней линии в случае двойной рамки aTopLine.InnerLineWidth = 0 ' это толщина внутренней линии в случае двойной рамки aTopLine.Color = 170000 aBorder.TopLine = aTopLine aBorder.BottomLine = aTopLine aBorder.LeftLine = aTopLine aBorder.RightLine = aTopLine aBorder.HorizontalLine = aTopLine aBorder.VerticalLine = aTopLine for i =1 to 10 oRange = oSheets.getCellByPosition(i,i+1) oRange.Value = i oRange.TableBorder = aBorder 'oRange.IsTextWrapped = true next
End Sub ps исправил, разкомментировал oRange = oSheets.getCellRangeByPosition(0,0,5,5)
|
|
« Последнее редактирование: 11 Май 2018, 12:12 от Bigor »
|
Записан
|
|
|
|
BotExtraSens
Участник

Offline
Сообщений: 24
|
Ваш код Рабочий ! Немного модифицировал ваш код под свои нужды Global i As Integer ' Глобальная Переменная сохраняет свои значения Global k As Integer ' даже после завершения макроса пишется выше скобки Sub
Sub Test_Borders ' Макрос Имя Dim aBorder, oRange, oDoc, oSheets ' Переменные Dim TableBorder As New com.sun.star.table.TableBorder ' Переменные Dim aTopLine As New com.sun.star.table.BorderLine
Dim oCell as Object ' Dim - обьявление переменной oCell тип Object Dim oSheet as Object ' Dim - обьявление переменной oSheet тип Object oDoc = ThisComponent ' Обращение к Текущему Открытому Документу oSheets = oDoc.Sheets(2) ' Обращение к № Листа Текущего Документа (Индекс 0 это первый Лист,Индекс 1 это Второй Лист и т.д) oRange = oSheets.getCellRangeByPosition(0,0,5,5) aBorder = oRange.TableBorder '****** Оформление ****************************************************************************************************** aTopLine.OuterLineWidth = 20 ' это толщина внешней линии в случае двойной рамки aTopLine.InnerLineWidth = 0 ' это толщина внутренней линии в случае двойной рамки aTopLine.Color = 170000 ' Цвет Линии aBorder.TopLine = aTopLine ' Обрамление Верхней линии Ячейки aBorder.BottomLine = aTopLine ' Обрамление Нижней линии Ячейки aBorder.LeftLine = aTopLine ' Обрамление Левой линии Ячейки aBorder.RightLine = aTopLine ' Обрамление Правой линии Ячейки aBorder.HorizontalLine = aTopLine ' Обрамление Горизонтальной линии Ячейки aBorder.VerticalLine = aTopLine ' Обрамление Вертикальной линии Ячейки
'*********** Вычисления ************************************************** k = 2 i = i + 1 ' Увеличение значений Глобальной переменной (i) на одну еденицу , при каждом запуске макроса oRange = oSheets.getCellByPosition(i,k) ' Обращение к Ячейке на Листе (первый индекс Столбец , второй индекс Строка) - Позицирование oRange.Value = i ' Присвоение Ячейке значения глобальной Переменной (i) которое будет отображатся в ячейках oRange.TableBorder = aBorder oRange.IsTextWrapped = true End Sub Возникли Вопросы : В моем варианте функционировали Шрифты, Размер текста, Цвет Фона и Текста ячейки oCell = oSheet.getCellByPosition (i, k) oCell.Value = i oCell = oSheet.getCellByPosition (i, k) oCell.Value = к oCell.CellBackColor = RGB(0, 255, 0) ' Фон ячейки (зеленый) ocell.CharColor = RGB(255, 0, 0) ' Цвет Чисел, Букв, Символов, Знаков (красный). ocell.CharFontName = "Courier" ' Шрифт Courier ocell.CharFontName = "Bold" ' Выделение шрифта (Жирный) ocell.CharHeight = 14 ' Высота Чисел, Букв, Символов, Знаков [/color] пробовал прикрутить к вашему Макросу , он начал Ругаться ( Как прикрутить без конфликта чтоб как в посте ниже ?
|
|
« Последнее редактирование: 11 Май 2018, 12:45 от BotExtraSens »
|
Записан
|
|
|
|
BotExtraSens
Участник

Offline
Сообщений: 24
|
Правильно система ругается, левых скобок вы поставили больше. Копируйте мой код из #12, он рабочий. И стоит обрезать мой комментарий, в коде он не нужен. Это то что после символа ' Не обратил внимание Ваш код Рабочий! Концепцию вашего варианта вроде понял. Кое что к ниму прикрутил в качестве доп оформления Global i As Integer ' Глобальная Переменная сохраняет свои значения даже после завершения макрос Global k As Integer ' Глобальная Переменная сохраняет свои значения даже после завершения макрос Global h As Integer Global j As Integer
Option VBASupport 1 ' поддержка совместимости с VBA Option Compatible
Sub Graf
Dim oDoc as Object ' Dim - обьявление переменной oDoc тип Object Dim oCell as Object ' Dim - обьявление переменной oCell тип Object Dim oSheet as Object ' Dim - обьявление переменной oSheet тип Object
oDoc=ThisComponent ' Обращение к Текущему Открытому Документу oSheet = oDoc.sheets (2) ' Обращение к № Листа Текущего Документа (Индекс 0 это первый Лист,Индекс 1 это Второй Лист и т.д) oCell = oSheet.getCellByPosition (i, k) ' Обращение к Ячейке на Листе (первый индекс Столбец , второй индекс Строка) - Позицирование oCell.Value = i ' Присвоение Ячейке значения Глобальной переменной (i) oCell = oSheet.getCellByPosition (i, k) ' Обращение к Ячейке на Листе (первый индекс Столбец , второй индекс Строка) - Позицирование oCell.Value = k ' Присвоение Ячейке значения Глобальной переменной (k) i = i + 1 ' увеличение значений глобальной переменной (k) на +1 с каждым запуском макроса k = k + 1 ' увеличение значений глобальной переменной (k) на +1 с каждым запуском макроса j = j + 1 h = h + 1 oCell.CellBackColor = RGB(0, 255, 0) ' Фон ячейки (зеленый) ocell.CharColor = RGB(255, 0, 0) ' Цвет Чисел, Букв, Символов, Знаков (красный). ocell.CharFontName = "Courier" ' Шрифт Courier ocell.CharFontName = "Bold" ' Выделение шрифта (Жирный) ocell.CharHeight = 14 ' Высота Чисел, Букв, Символов, Знаков '===================================================
with Range(Cells(j, i), Cells(h, k)).Borders(xlEdgeLeft) 'Нумерация строк и столбцов в Cells идет с 0, то есть A1 - это Cells(0, 0) .LineStyle = xlContinuous .Weight = xlThin
End With
End Sub
|
|
|
Записан
|
|
|
|
Bigor
|
пробовал прикрутить к вашему Макросу , он начал Ругаться ( Как прикрутить без конфликта чтоб как в посте ниже ? а на какую строку ругается? и вот это [/color] зачем? скорее всего на нее и ругается
|
|
|
Записан
|
|
|
|
BotExtraSens
Участник

Offline
Сообщений: 24
|
[/color] зачем? скорее всего на нее и ругается Да не Это я уж тут на сайте так криво оформил код, когда выкладывал а Ругается на все ocell.CharColor = RGB(255, 0, 0) ' Цвет Чисел, Букв, Символов, Знаков (красный). ocell.CharFontName = "Courier" ' Шрифт Courier ocell.CharFontName = "Bold" ' Выделение шрифта (Жирный) ocell.CharHeight = 14 ' Высота Чисел, Букв, Символов, Знаков
Пишет Ошибка времени выполнения BASIC. Объектная переменная не установлена. Озадачился как прикрутить ?
|
|
|
Записан
|
|
|
|
Bigor
|
У меня в макросе oSheets у тебя oSheet приведи к одному чему нибудь 
|
|
|
Записан
|
|
|
|
BotExtraSens
Участник

Offline
Сообщений: 24
|
У меня в макросе oSheets у тебя oSheet приведи к одному чему нибудь  О май Sheet , а я то думал у меня оСел слетел  подправил теперь работает! один вопрос остался oRange = oSheets.getCellRangeByPosition(0,0,5,5)
что за параметры ? пробовал заменять их наoRange = oSheets.getCellRangeByPosition(i, k)
Ругается на ошибкуОшибка времени выполнения BASIC. Вызвано исключение Type: com.sun.star.lang.IllegalArgumentException Message: arguments len differ!.
|
|
|
Записан
|
|
|
|
Bigor
|
оставь как было, он ни на что не влияет, просто захотелось для aBorder вне цикла значения присвоить, вот и сделал "фиктивный" oRange, что бы aBorder получить  если хочешь заменить, то надо: oRange = oSheets.getCellByPosition(i, k)
|
|
« Последнее редактирование: 11 Май 2018, 15:00 от Bigor »
|
Записан
|
|
|
|
economist
|
У диапазона 4 координаты. А в oRange = oSheets.getCellRangeByPosition(i, k) - даны две.
Вообще такой стиль программирования как "наугад" - в принципе допустим, но только поначалу. LibreOffice довольно неплохо сообщает об ошибках, но их нужно обязательно читать :-)
|
|
« Последнее редактирование: 11 Май 2018, 15:01 от economist »
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
BotExtraSens
Участник

Offline
Сообщений: 24
|
оставь как было, он ни на что не влияет, просто захотелось для aBorder вне цикла значения присвоить, вот и сделал "фиктивный" oRange, что бы aBorder получить  если хочешь заменить, то надо: oRange = oSheets.getCellByPosition(i, k) У диапазона 4 координаты. А в oRange = oSheets.getCellRangeByPosition(i, k) - даны две.
Вообще такой стиль программирования как "наугад" - в принципе допустим, но только поначалу. LibreOffice довольно неплохо сообщает об ошибках, но их нужно обязательно читать :-)
Спасибо вам за помощь! Свой вопрос решил в двух вариантах !! В первом посте выложил итоговые варианты. Может кому из новичков пригодится.
|
|
|
Записан
|
|
|
|
economist
|
Жирность шрифта в коде этой ветки задается неправильно: oCell.CharFontName = "Bold"
Правильно так: oCell.CharWeight = com.sun.star.awt.FontWeight.BOLD
или так: oCell.CharWeight = 200 ' 100 - обычный
|
|
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
|