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

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

26 Апрель 2018, 04:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 4 5 6 7 8 »   Вниз
  Печать  
Автор Тема: Выполнить поиск на странице макросом  (Прочитано 3002 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Bigor
Старожил
****
Offline Offline

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


« Ответ #15: 9 Февраль 2018, 17:33 »

чтобы поиск шёл только по видимым строкам

C поиском ничего не сделаешь Грустный
Можно обрабатывать результаты поиска, что бы игнорировать скрытые строки/столбцы.

Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #16: 9 Февраль 2018, 17:39 »

Можно обрабатывать результаты поиска, что бы игнорировать скрытые строки/столбцы.
Как?
Скажем значение нашлось в ячейке B5, но эта строка скрыта. Как мне списке адресов, в которых нашлось искомое, не выводить этот адрес?
Записан
Bigor
Старожил
****
Offline Offline

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


« Ответ #17: 9 Февраль 2018, 17:49 »

проверяешь строку 5, если скрыта значение не выводишь
типа так
Код:
if oFound.getByIndex(i).getRows().IsVisible then
 показываем
end if
Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #18: 9 Февраль 2018, 17:54 »

проверяешь строку 5
Где в коде указан номер строки? Или как его указать? И если мне надо наоборот записать "если скрыт" - то я должен писать if
Код:
oFound.getByIndex(i).getRows().IsHidden then
?[/s]
Разобрааааааался! Огромнейшее-приогромнейшее СПАСИБИЩЕ!
« Последнее редактирование: 9 Февраль 2018, 18:01 от OOKapitan » Записан
Bigor
Старожил
****
Offline Offline

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


« Ответ #19: 9 Февраль 2018, 18:01 »

нету в коде 5-й строки Улыбка он просматривает все найденное и выводит результат только видимых ячеек. (хотя я его не проверял)

Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #20: 12 Февраль 2018, 17:43 »

нету в коде 5-й строки
проверяешь строку 5, если скрыта значение не выводишь
типа так
Шокирован
Записан
Bigor
Старожил
****
Offline Offline

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


« Ответ #21: 12 Февраль 2018, 17:58 »

Ну пока писал, нашел более оптимальный метод Улыбка
Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #22: 14 Февраль 2018, 15:54 »

Ну пока писал, нашел более оптимальный метод
Ясно  Смеющийся . Большущее спасибо.
Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #23: 27 Февраль 2018, 17:19 »

     Здравствуйте, снова.
     Возник новый вопрос по указанному коду. Точнее код чуть-чуть переделан. Дело в том, что мне нужно, чтобы поиск осуществлялся по шести листам. И я переделал код так:
     
Код:
Dim desc, oFind, s, a, r, k, b, c, d
oDoc=ThisComponent
For i=0 To 6
oSheet = oDoc.Sheets(i)
desc=oSheet.createSearchDescriptor()
desc.SearchRegularExpression=false
desc.SearchString="Строка поиска"   'Что найти
desc.SearchWords=true      'Ячейку целиком
oFind=oSheet.findAll(desc)
s=oFind.RangeAddressesAsString
r=s.StartRow
oSheet.getCellByPosition (5, r).Value=1
Next i
End Sub
    Однако данный макрос вылетает на строке r=s.StartRow с ошибкой, что переменная типа Object не установлена. Подскажите, как это исправить, пожалуйста.
Записан
Bigor
Старожил
****
Offline Offline

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


« Ответ #24: 27 Февраль 2018, 17:32 »

RangeAddressesAsString возвращает строку.
В твоем случае нужно использовать getRangeAddresses()
Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #25: 27 Февраль 2018, 17:45 »

В твоем случае нужно использовать getRangeAddresses()
И как это сделать? Напиши (можно на ты?) пример кода, пожалуйста.
Записан
Bigor
Старожил
****
Offline Offline

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


« Ответ #26: 27 Февраль 2018, 18:36 »

так я уже приводил примеры выше
http://forumooo.ru/index.php/topic,6960.0/msg,45224.html
Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #27: 28 Февраль 2018, 11:39 »

так я уже приводил примеры выше
Не понял о чём ты. Поменял в макросе выше RangeAddressesAsString на getRangeAddresses() - всё-равно ошибка. Что делаю не так?
Записан
Bigor
Старожил
****
Offline Offline

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


« Ответ #28: 28 Февраль 2018, 11:43 »

В скобках ноль поставил? должно быть так:
oFind.RangeAddresses(0).StartRow

p.s.
обрабатывать будет только первое нахождение.
и зачем тебе 2 переменных s и  r  ?
« Последнее редактирование: 28 Февраль 2018, 11:47 от Bigor » Записан
OOKapitan
Старожил
****
Offline Offline

Сообщений: 305


« Ответ #29: 28 Февраль 2018, 12:07 »

обрабатывать будет только первое нахождение.
А как чтобы по очереди все?
Записан
Страниц: « 1 2 3 4 5 6 7 8 »   Вверх
  Печать  
 
Перейти в:  

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