Выполнить поиск на странице макросом

Автор OOKapitan, 7 февраля 2018, 14:02

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

OOKapitan

    Сейчас делаю макрос для другого файла. Там лист один, но найтись в нём искомое может несколько раз. Как записать цикл, чтобы макрос обрабатывал (обработку я сам напишу) по очереди каждое найденное искомое?

bigor

в этой теме был уже
For j=0 to oFind.Count-1
If oFind.getByIndex(j).getRows().IsVisible=False then
Print "Документ не найден"
Exit Sub
End If
Next j
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan


OOKapitan

А как использовать этот j, чтобы обратиться к значению ячейки найденного? Ну то есть что-то типа oSheet.getCellByPosition (k+9, r) для каждого найденного?

bigor

Цитата: OOKapitan от  6 марта 2018, 15:54А как использовать этот j, чтобы обратиться к значению ячейки найденного
в данном случае не знаю, но есть другой вариант, тоже из начала темы:
For j=0 To oFind.count-1
msgbox "Столбец: " & oFind.RangeAddresses(j).StartColumn & " Строка: " & oFind.RangeAddresses(j).StartRow
Next
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от  6 марта 2018, 17:34но есть другой вариант, тоже из начала темы:
Огромнейшее-приогромнейшее спасибо.

OOKapitan

    Появился новый вопрос.
    Я использовал Ваш пример кода и сделал обработку. Но мне надо сделать так: при первом найдении - мо обработка в виде InputBox с комментарием к найденному. Для последующих "найдений" этого искомого мне нужно, чтобы макрос автоматически вписывал тот комментарий, который я задал в InputBox для первого искомого. То есть при первом нахождении искомого макрос меня спрашивает (реализовано через InputBox), какой комментарий ввести, а для последующих нахождений этого же искомого - уже автоматически ставит комментарий, введённый мной для первого нахождения? Как такое записать? Помогите, пожалуйста.

bigor

первое вхождение это j=0 :) , т.е. если j=0 то спрашиваем комментарий, иначе вставляем готовый
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от  7 марта 2018, 09:18первое вхождение это j=0
То есть надо как-то так:
If j=0 Then наша обработка?

OOKapitan

Цитата: Bigor от  7 марта 2018, 09:18иначе вставляем готовый
А как ему прописать, что готовый - тот который спросили при j=0?

bigor

ну ты когда спрашивал присвоил ответ какой-то переменной, вот потом и вставляй эту переменную куда хочешь
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

bigor

Цитата: OOKapitan от  7 марта 2018, 09:33То есть надо как-то так:
я не знаю что у тебя за обработка, исходя из предыдущего вопроса надо так
if j=0 then
sInp=inputbox(......введите что-то)
вставляем sInp куда то
...
else
вставляем sInp куда то
end if
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

#87
Цитата: Bigor от  7 марта 2018, 09:43ну ты когда спрашивал присвоил ответ какой-то переменной
Нет. Я задаю InputBox так:
a=InputBox("Что ищем", "Искомое")
Дальше присвоил ячейке значение этого InputBox так:
oSheet.getCellByPosition (k+10, r).String=a
А как теперь сделать, чтобы при j>0 не вылезал InputBox, а автоматически его значение проставлялось в ячейку? Причём для всех последующих j?
Так что ли:
If j>0 Then oSheet.getCellByPosition (k+10, r).String=a?

bigor

Издеваешься :)
Ты с английским дружишь, переведи

if .... then

else

end if
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от  7 марта 2018, 09:57Ты с английским дружишь, переведи
Я это знаю. Просто не мог допереть, что oSheet.getCellByPosition (k+10, r).String=a нужно продублировать в этом If.
Огромнейшее спасибо.