Функция if then которая отвечает за выполнение или не выполнение каких либо действий по определенному условию может иметь несколько вложенных операторов Elseif и быть довольно сложной.
Рассмотрим пример из макроса Комплексного отчета - построение файла данные для проводок. В этом файле столбец "Сумма документа" копируется в несколько смежных столбцов, где затем заголовки меняются на соот. цех, а данные не принадлежащие этому цеху удаляются. Рассмотрим как это реализуется программно:
Sub Dell_Cell
'Определяем текущий диапазон
oSheet = ThisComponent.CurrentController.getActiveSheet()
myrows=oSheet.getrows
oCellCursor = oSheet.createCursor()
oCellCursor.GotoStartOfUsedArea(True)
oCellCursor.GotoEndOfUsedArea(True)
Start_Row = oCellCursor.getRangeAddress.StartRow
End_Row = oCellCursor.getRangeAddress.EndRow + 1
For i=End_Row To Start_Row step -1
'Определяем что содержит ячейка с названием цеха в столбце 10
text1 = osheet.getcellbyposition(9,i).String
'Если она содержит Производство, тогда в этой строчке удаляем данные из ячеек не
'принадлежащих производству (другие цеха)
If Left(text1,12) = "Производство" Then
osheet.getcellbyposition(3,i).String = ""
osheet.getcellbyposition(5,i).String = ""
osheet.getcellbyposition(6,i).String = ""
osheet.getcellbyposition(7,i).String = ""
'Если она содержит Пекарня, тогда в этой строчке удаляем данные из ячеек не
'принадлежащих Пекарне(другие цеха)
ElseIf Left(text1,17) = "Пекарня" Then
osheet.getcellbyposition(4,i).String = ""
osheet.getcellbyposition(5,i).String = ""
osheet.getcellbyposition(6,i).String = ""
osheet.getcellbyposition(7,i).String = ""
'И так далее...
ElseIf Left(text1,8) = "Столовая" Then
osheet.getcellbyposition(3,i).String = ""
osheet.getcellbyposition(4,i).String = ""
osheet.getcellbyposition(6,i).String = ""
osheet.getcellbyposition(7,i).String = ""
ElseIf Left(text1,18) = "Цех фасовки овощей" Then
osheet.getcellbyposition(3,i).String = ""
osheet.getcellbyposition(4,i).String = ""
osheet.getcellbyposition(5,i).String = ""
osheet.getcellbyposition(7,i).String = ""
ElseIf Left(text1,8) = "-" Then
osheet.getcellbyposition(3,i).String = ""
osheet.getcellbyposition(4,i).String = ""
osheet.getcellbyposition(5,i).String = ""
osheet.getcellbyposition(6,i).String = ""
End if
Next i
End Sub
Задача: Откройте необработанный файл реестр документов по МХ - скопируйте столбец сумма в два столбцы правее (оставив предварительно пустые столбцы). Откорректируйте приведенный выше макрос по ваш файл и сделайте обработку на цеха Производства, Пекарни, Столовой.
Комментариев нет:
Отправить комментарий