Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

7 Март 2021, 06:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Помогите переписать макрос с VBA на OO Basic  (Прочитано 3721 раз)
0 Пользователей и 1 Гость смотрят эту тему.
CEBAnder
Новичок
*
Offline Offline

Сообщений: 3


« Стартовое сообщение: 24 Декабрь 2014, 19:37 »

Нужен макрос, который бы отсортировал таблицу и рядом с ней построил аналогичную, но лишь со строками, где кол-во обучающихся больше 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


* таблица.png (12.9 Кб, 635x260 - просмотрено 28 раз.)
Записан
Aleksandr H.
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Wild West Ukraine
Сообщений: 96

glory to nation


WWW
« Ответ #1: 24 Декабрь 2014, 21:29 »

CEBAnder, твой код не сортирует таблицу :-)
Записан
CEBAnder
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #2: 24 Декабрь 2014, 21:31 »

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

* Кр1.rar (11.22 Кб - загружено 6 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 061


iMac, LibreOffice и Apache OpenOffice


« Ответ #3: 24 Декабрь 2014, 21:42 »

Вот код:
Код:
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
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #4: 24 Декабрь 2014, 21:54 »

Большое спасибо, спасли студента)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 061


iMac, LibreOffice и Apache OpenOffice


« Ответ #5: 24 Декабрь 2014, 22:00 »

CEBAnder, твой код не сортирует таблицу :-)
Мой код тоже не сортирует, а только фильтрует по критерию "второе поле больше 50"
Записан

Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!