При форматировании документов во многих случаях удобно использовать двойной цикл for to next для того чтобы придать определенным ячейкам, срокам или столбцам какой-либо параметр или заливку. Сам макрос читается в этом случае как - пройти по всем указанным ячейкам, и если условия выполняется придать им определенное значение. Поясним на примере кода из макроса Разбивка инвентаризации для объяснительной:
Sub Cveta
'Обозначаем текущий лист и диапазон
oSheet = ThisComponent.Sheets(0)
oCellCursor = oSheet.createCursor()
oCellCursor.GotoStartOfUsedArea(True)
oCellCursor.GotoEndOfUsedArea(True)
Start_Row = oCellCursor.getRangeAddress.StartRow
End_Row = oCellCursor.getRangeAddress.EndRow + 1
'Указываем что программе нужно пройти от первой до последней строки с столбце 7
For i=End_Row To Start_Row step -1
For j=0 To 6
'Указываем искомые значение и что вернуть в случае их нахождения
text1 = osheet.getcellbyposition(6,i).Value
If text1 < -5000 Then
'Если значение ячейки меньше -5000 - окрасить ее в желтый цвет
oSheet.getCellByPosition (j,i).CellBackColor = 16777113
' Если больше 5000 - окрасить ее в красный цвет
Else if text1 > 5000 Then
oSheet.getCellByPosition (j,i).CellBackColor = 16750950
End if
End if
Next j
Next i
End Sub
Рассмотрим еще пример. Функция применения автоширины на всех указанных листах для всех указанных диапазонов:
Sub Tema
'Пройти с листа 1 по лист 4
For j=0 To 3
Sheet = ThisComponent.Sheets(j)
'Применить на всех этих листах для столбцов с 1 по 9 автоширину.
For I = 0 To 8
Columns = Sheet.Columns(I)
Columns.OptimalWidth = True
Next I
Next j
Задача: В файле содержащем три листа (можно одинаковых) применить для всех первых строк (заголовков) - жирный шрифт.
Sub Cveta
'Обозначаем текущий лист и диапазон
oSheet = ThisComponent.Sheets(0)
oCellCursor = oSheet.createCursor()
oCellCursor.GotoStartOfUsedArea(True)
oCellCursor.GotoEndOfUsedArea(True)
Start_Row = oCellCursor.getRangeAddress.StartRow
End_Row = oCellCursor.getRangeAddress.EndRow + 1
'Указываем что программе нужно пройти от первой до последней строки с столбце 7
For i=End_Row To Start_Row step -1
For j=0 To 6
'Указываем искомые значение и что вернуть в случае их нахождения
text1 = osheet.getcellbyposition(6,i).Value
If text1 < -5000 Then
'Если значение ячейки меньше -5000 - окрасить ее в желтый цвет
oSheet.getCellByPosition (j,i).CellBackColor = 16777113
' Если больше 5000 - окрасить ее в красный цвет
Else if text1 > 5000 Then
oSheet.getCellByPosition (j,i).CellBackColor = 16750950
End if
End if
Next j
Next i
End Sub
Рассмотрим еще пример. Функция применения автоширины на всех указанных листах для всех указанных диапазонов:
Sub Tema
'Пройти с листа 1 по лист 4
For j=0 To 3
Sheet = ThisComponent.Sheets(j)
'Применить на всех этих листах для столбцов с 1 по 9 автоширину.
For I = 0 To 8
Columns = Sheet.Columns(I)
Columns.OptimalWidth = True
Next I
Next j
Задача: В файле содержащем три листа (можно одинаковых) применить для всех первых строк (заголовков) - жирный шрифт.
Комментариев нет:
Отправить комментарий