|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
Не смог я справиться - поддержите знаниями! Дело такое. Хочу я в VBA применить функцию листа ПОИСКПОЗ(). Пишу такую строку: Код: vbnet 1.
Всё бы хорошо, но переменной ААА в диапазоне может не оказаться и VBA выдаёт ошибку. Как её обойти при отсутствии в диапазоне искомого значения, так и не понял. Пробовал так: Код: vbnet 1.
не помогло. Код: vbnet 1.
не помогло. Код: vbnet 1.
не помогло. ОШИБКА # 1004: Невозможно получить свойство Match. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 22:22 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
Valll, Попробуйте так: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 22:25 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
А почему нужна именно функция листа? Чем вас не устраивает поиск? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 22:50 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
Ура! Получилось! Спасибо за помощь! С делал так: Код: vbnet 1.
Ошибка правильно отработалась. Ну VBA, ну "писатели" - синтаксис как у тех.писателей из "1С". Вчера купил учебную версию 1С 8.0, покупал у супер-пупер дилеров - офис весь в понтах. Открыл при них руководство... читаю: "ограничение - количество записей в табличных частях объектов - 1000." Спрашиваю что это такое? Весь офис передёрнулся, долго чесали затылки и всем офисом пошли к директору... Он подумал и сказал: "Позвоните НАМ на горячую линию, там девушка грамотная сидит"... Ей долго объясняли и она дала ответ.......... "Это регистры"!!?? Томить я сотрудников больше не стал и вышел. Ещё раз спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 22:51 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
Ошибся с кодом: вот так получилось, как и советовали: Код: vbnet 1.
AndreTM - приму и ваш способ, спасибо. Просто думал так проще... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 22:54 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
А, не... Мой надо ещё усложнять проверками - это же стандартный Find листа, посему ищет, приводя значения к литералам. И находит, например, "3" в ячейке с "1356" :) Так что надо: Код: vbnet 1.
Зато получаете ответом сразу объект-ячейку, плюс (закомментированное) поиск всех вхождений... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2013, 23:13 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
Принял, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 10:06 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
AndreTM...Зато получаете ответом сразу объект-ячейку, плюс (закомментированное) поиск всех вхождений... С закоментированным получите бесконечный цикл - см. справку по методу FindNext. Мне с некоторых пор больше нравится Application.Match. Попробуйте, например, методом Find найти дату, если формат ячеек с датами отличается от стандартного. Или если эти даты являются результатом работы формул. Получить объект-ячейку, зная ее индекс, очень легко: aaa.Cells(Proba). Если столбец (строка) поиска упорядочены по возрастанию или убыванию, можно использовать Match с последним аргументом 1 или -1. В этом случае функция работает очень быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:37 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
КазанскийС закоментированным получите бесконечный цикл - см. справку по методу FindNext.С какого перепугу? Это же пример - я ведь могу и другое условие выхода пользоватьКазанскийМне с некоторых пор больше нравится Application.Match. Попробуйте, например, методом Find найти дату, если формат ячеек с датами отличается от стандартного. Или если эти даты являются результатом работы формул.Смысл искать по формату? Ищем дату как число - вот наше кредоКазанскийПолучить объект-ячейку, зная ее индекс, очень легко: aaa.Cells(Proba).С какого? AAA - искомое значение , а не ячейка-объект. Или я что-то пропустил? И ещё не забыть бы учесть смещение от начала диапазона, в котором искали...КазанскийЕсли столбец (строка) поиска упорядочены по возрастанию или убыванию, можно использовать Match с последним аргументом 1 или -1. В этом случае функция работает очень быстро.Это-то понятно. Вот только ТС ненавязчиво намекает нулём, что ему такое не упёрлось. Ну и в пику этому могу сказать, что кроме .FindNext есть ещё .FindPrevious Хотя в целом - это же был просто пример. Раз захотелось искать функциями листа - право ваше. Я таким не страдаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:00 |
|
Помогите справиться с такой конструкцией: Application.WorksheetFunction.Match()
|
|||
---|---|---|---|
#18+
AndreTM, а я в чем-то согласен с Казанским. По поводу поиска дат на листе. Если отображается дата, а там еще и время, то можно на грабли попасть. Да и вообще не всегда корректно с датами поиск работает. Хотя меня лично и Match не устраивает. Я привык загонять данные в массив и уже по массиву искать. Довольно быстро получается, а где-то даже быстрее, чем Find(с числами, как правило. Текст чуть дольше ищется). Да и условия можно гибче задать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:10 |
|
|
start [/forum/topic.php?fid=61&msg=38261122&tid=2174803]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 327ms |
total: | 462ms |
0 / 0 |