Помогите переписать макрос с VBA на OO Basic

Автор CEBAnder, 24 декабря 2014, 19:37

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

CEBAnder

Нужен макрос, который бы отсортировал таблицу и рядом с ней построил аналогичную, но лишь со строками, где кол-во обучающихся больше 50
Собственно, код на VBA
Sub Макрос1()
Dim rn As Range, r&, rr&
Set rn = ActiveSheet.UsedRange
For r = 1 To rn.Rows.Count
  If Val(rn(r, 3)) > 50 Or Val(rn(r, 3)) = 0 Then
    rr = rr + 1
    Range(Cells(rr, 6), Cells(rr, 9)).Value = rn.Rows(r).Value
  End If
Next r
End Sub

Aleksandr H.

CEBAnder, твой код не сортирует таблицу :-)

CEBAnder

Вот, если не верите

rami

Вот код:Sub Filter
Dim oSheet ' Лист для фильтра.
Dim oRange ' Диапазон для фильтрации.
Dim oFilterDesc 'Описатель фильтра.
Dim oFields(0) As New com.sun.star.sheet.TableFilterField
oSheet = ThisComponent.getSheets().getByIndex(0)
oRange = oSheet.getCellRangeByName("A1:D25")
'создаем пустой описатель фильтра.
oFilterDesc = oRange.createFilterDescriptor(True)
'Задаем поле для просмотра ячеек
oFields(0).Field=2 ' Фильтр по Столбцу C.
oFields(0).Operator = com.sun.star.sheet.FilterOperator.GREATER 'критерий фильтра БОЛЬШЕ
oFields(0).NumericValue=50      'величина критерия
oFields(0).IsNumeric=true
  oFilterDesc.CopyOutputData=True
  Dim oCellAddress As New com.sun.star.table.CellAddress    'адрес куда копировать
  oCellAddress.Sheet=0
  oCellAddress.Column=5
  oCellAddress.Row=0
  oFilterDesc.OutputPosition=oCellAddress
oFilterDesc.setFilterFields(oFields())
'oFilterDesc.ContainsHeader = False 'без учета заголовка
'oFilterDesc.SkipDuplicates = True 'без дубликатов
oRange.filter(oFilterDesc)
End Sub

CEBAnder


rami

Цитата: Aleksandr H. от 24 декабря 2014, 19:29CEBAnder, твой код не сортирует таблицу :-)
Мой код тоже не сортирует, а только фильтрует по критерию "второе поле больше 50"