Vba excel find если не найдено
Я пытаюсь найти идентификатор в списке и получить его адрес, но также справляюсь с ситуацией, если ничего не найдено.
Вот что у меня есть:
Когда я запускаю test_stuff() , я получаю ошибку в функции в строке If found1 = Nothing Then с выделенным словом Nothing . "Compile error; Invalid Use of Object". Не знаю, что делать.
2 ответа
В конкретном диапазоне 1-column-wide в электронной таблице мне нужно использовать метод Excel 2007 VBA range.find , чтобы найти текстовую ячейку, содержащую 2-символьное длинное значение: 8 (произносится в US как восемь дюймов). Метод .find находится в субподрядчике, который отлично работает для.
Я пытаюсь найти строку в excel, используя VBA .. для ex. Мой лист содержит следующие данные 1.Lalit 2.Lalit Если есть только одна строка с вхождением lalit , то она дает правильный результат, а если есть 2 строки с той же строкой, то она возвращает 2-ю строку в качестве результата вместо первой.
Чтобы проверить объект range , вам нужно использовать is вместо = :
Объяснение:
Nothing -это неинициализированное состояние объектной переменной. Объект не может быть простой переменной, такой как число или строка, поэтому он никогда не может быть 0 или "". Это должна быть более полная структура (текстовое поле, форма, набор записей, querydef, . )
Поскольку это не простое значение, вы не можете проверить, равно ли оно чему-то. VBA имеет ключевое слово Is , которое вы используете.
Это решает проблему? Если это так, проверьте решенный checkbox.
Похожие вопросы:
Sub search Set objExl = CreateObject(Excel.Application) Set objWb = objExl.Workbooks objWb.Open(C:\Documents and Settings\user\Desktop\book.xls) Set strbol = objWb(C:\Documents and.
Я должен найти значение celda в листе Excel. Я использовал этот код vba, чтобы найти его: Set cell = Cells.Find(What:=celda, After:=ActiveCell, LookIn:= _ xlFormulas, LookAt:=xlWhole.
Когда я выполняю этот vba sub, значения, возвращаемые из find в переменных Temp1 и Search, являются содержимым ячейки, а не переменной диапазона с адресом ячейки. Код здесь: Sub updateFDFList(Fname.
В конкретном диапазоне 1-column-wide в электронной таблице мне нужно использовать метод Excel 2007 VBA range.find , чтобы найти текстовую ячейку, содержащую 2-символьное длинное значение: 8.
Я пытаюсь найти строку в excel, используя VBA .. для ex. Мой лист содержит следующие данные 1.Lalit 2.Lalit Если есть только одна строка с вхождением lalit , то она дает правильный результат, а если.
У меня есть рабочий лист, в котором столбцы A - I заполнены данными. Столбец а содержит даты от 30/11/2011 до 6/12/2011. У меня есть форма пользователя, в которой есть 2 кнопки optionbuttons. При.
Я использую Excel VBA для поиска строки, например CCC, на листе Excel. Я использовал показанный простой код. Однако я хочу, чтобы VBA выбрал ячейку, в которой найдено первое вхождение CCC. (Точно.
VBA метод find, кажется, терпит неудачу, когда я пытаюсь найти значение в определенном столбце. Этот код Sub TargetR() Dim CLL As Range Dim TargetRange As Worksheet Dim R As Range Set CLL =.
Вопрос: vba Range.FindNext v Range.Find-что я пропустил ? Привет ( Я все еще не слишком хорошо знаком с публикацией здесь, так что прошу прощения, если у меня что-то не совсем правильно ) Я сделал.
Я пытаюсь использовать метод VBA Find для столбца, который использует функцию Excel Concatenate для двух других столбцов. Похоже, он не может найти значение, которое отображается с помощью функции.
Метод Find объекта Range предназначен для поиска ячейки и сведений о ней в заданном диапазоне по ее значению, формуле и примечанию. Чаще всего этот метод используется для поиска в таблице ячейки по слову, части слова или фразе, входящей в ее значение.
Синтаксис метода Range.Find
Expression . Find ( What , After , LookIn , LookAt , SearchOrder , SearchDirection , MatchCase , MatchByte , SearchFormat )Expression – это переменная или выражение, возвращающее объект Range, в котором будет осуществляться поиск.
В скобках перечислены параметры метода, среди них только What является обязательным.
Метод Range.Find возвращает объект Range, представляющий из себя первую ячейку, в которой найдена поисковая фраза (параметр What). Если совпадение не найдено, возвращается значение Nothing.
Если необходимо найти следующие ячейки, содержащие поисковую фразу, используется метод Range.FindNext.
Параметры метода Range.Find
- xlValues (-4163) – значения;
- xlComments (-4144) – примечания*;
- xlNotes (-4144) – примечания*;
- [xlFormulas (-4123) – формулы]**.
- xlWhole (1) – полное совпадение;
- xlPart (2) – частичное совпадение.
- xlByRows (1) – поиск по строкам;
- xlByColumns (2) – поиск по столбцам.
- xlNext (1) – поиск вперед;
- xlPrevious (2) – поиск назад.
- False (0) – поиск без учета регистра (по умолчанию);
- True (1) – поиск с учетом регистра.
- False (0) – двухбайтовый символ может соответствовать однобайтовому символу;
- True (1) – двухбайтовый символ должен соответствовать только двухбайтовому символу.
* Примечания имеют две константы с одним значением. Проверяется очень просто: MsgBox xlComments и MsgBox xlNotes .
** Тесты показали неработоспособность метода Range.Find с константой xlFormulas в моей версии VBA Excel.
В справке Microsoft тип данных всех параметров, кроме SearchDirection, указан как Variant.
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Синтаксис
выражение.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
выражение: переменная, представляющая объект Range.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
What | Обязательный | Variant | Искомые данные. Может быть строкой или любым типом данных Microsoft Excel. |
After | Необязательный | Variant | Ячейка, после которой нужно начать поиск. Соответствует положению активной ячейки, когда поиск выполняется из пользовательского интерфейса. |
Обратите внимание, что параметр After должен быть одной ячейкой в диапазоне. Помните, что поиск начинается после этой ячейки; указанная ячейка не входит в область поиска, пока метод не возвращается обратно в эту ячейку.
Возвращаемое значение
Объект Range, представляющий первую ячейку, в которой обнаружены требуемые сведения.
Примечания
Этот метод возвращает значение Nothing, если совпадения не найдены. Метод Find не влияет на выделенный фрагмент или активную ячейку.
Параметры для аргументов LookIn, LookAt, SearchOrder и MatchByte сохраняются при каждом использовании этого метода. Если вы не укажете значения этих аргументов при следующем вызове метода, будут использоваться сохраненные значения. Установка этих аргументов изменяет параметры в диалоговом окне Найти, а изменение параметров в диалоговом окне Найти приводит к изменению сохраненных значений, которые используются, если опустить аргументы. Чтобы избежать проблем, устанавливайте эти аргументы явным образом при каждом использовании этого метода.
Для повторения поиска можно использовать методы FindNext и FindPrevious.
Когда поиск достигает конца указанного диапазона поиска, он возвращается в начало диапазона. Чтобы остановить поиск при этом возврате, сохраните адрес первой найденной ячейки, а затем проверьте адрес каждой последующей найденной ячейки, сравнив его с этим сохраненным адресом.
Чтобы найти ячейки, отвечающие более сложным шаблонам, используйте инструкцию For Each. Next с оператором Like. Например, следующий код выполняет поиск всех ячеек в диапазоне A1:C5, где используется шрифт, имя которого начинается с букв Cour. Когда Microsoft Excel находит соответствующее значение, шрифт изменяется на Times New Roman.
Примеры
В этом примере показано, как найти все ячейки в диапазоне A1:A500 на листе 1, содержащие значение 2, и изменить значение ячейки на 5. Таким образом, значения 1234 и 99299 содержали 2 и оба значения ячеек станут 5.
В этом примере показано, как найти все ячейки в диапазоне A1:A500 на листе 1, содержащие подстроку "abc", и изменить ее на "xyz".
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Кто не знает метод FIND в Excel? Я уверен, что все знают, кто имеет дело с рабочими листами Excel. НАЙТИ или популярную комбинацию клавиш Ctrl + F найдет слово или контент, который вы ищете во всей рабочей таблице, а также во всей рабочей книге. Когда вы говорите, что найти означает, что вы находите в ячейках или диапазонах не так ли? Да, правильный метод поиска является частью ячеек или диапазонов в Excel, а также в VBA.
Аналогично, в VBA Find у нас есть опция под названием FIND function, которая может помочь нам найти искомое значение. В этой статье я познакомлю вас с методологией FIND в VBA.
Формула для поиска функции в Excel VBA
В обычной рабочей таблице Excel мы просто нажимаем сочетание клавиш Ctrl + F, чтобы найти содержимое. Но в VBA нам нужно написать функцию, чтобы найти контент, который мы ищем. Хорошо, тогда давайте посмотрим на синтаксис FIND.
Я знаю, что происходит в вашем уме, вы потерялись, глядя на этот синтаксис, и вы ничего не понимаете. Но не о чем беспокоиться, прежде чем я объясню вам синтаксис, позвольте мне познакомить вас с обычным окном поиска.
Если вы наблюдаете за тем, что есть в обычных Ctrl + F, все также присутствует в синтаксисе VBA Find. Теперь посмотрим, о чем говорит каждое слово в синтаксисе.
Что: просто то, что вы ищете. Здесь нужно упомянуть контент, который мы ищем.
После: после какой ячейки вы хотите искать.
LookIn: где искать то, что вы ищете. Например, формулы, значения или комментарии. Параметры: xlFormulas, xlValues, xlComments.
LookAt: ищите ли вы весь контент или только часть контента. Параметры: xlWhole, xlPart.
SearchOrder: вы ищете в строках или столбцах. xlByRows или xlByColumns.
SearchDirection: вы смотрите на следующую или предыдущую ячейку. xlNext, xlPrevious.
MatchCase: содержимое, которое вы ищете, чувствительно к регистру или нет. Правда или ложь.
MatchByte: это только для двухбайтовых языков. Правда или ложь.
SearchFormat: вы ищете форматирование. Если вы ищете формат, вам нужно использовать метод Application.FindFormat .
Это объяснение синтаксиса метода VBA FIND. Помимо первого параметра все необязательно. В разделе примеров мы увидим, как использовать этот метод FIND в кодировании VBA.
Как использовать функцию поиска VBA Excel?
Мы научимся использовать функцию VBA Find Excel на нескольких примерах.
Вы можете скачать этот шаблон VBA Find Excel здесь - VBA найти шаблон Excel
Функция поиска VBA - пример № 1
Прежде всего позвольте мне объяснить вам простой пример использования свойства FIND и найти контент, который мы ищем. Предположим, ниже приведены данные, которые вы имеете в своем листе Excel.
Шаг 1: Из этого я хочу найти имя Джон, давайте откроем Visual Basic и начнем кодирование.
Код:
Шаг 2: Здесь вы не можете начать слово FIND, потому что FIND является частью свойства RANGE. Итак, во-первых, нам нужно упомянуть, где мы смотрим, т.е. Range.
Шаг 3: Итак, сначала укажите диапазон, в котором мы ищем. В нашем примере наш диапазон от B2 до B11.
Код:
Шаг 4: После упоминания диапазона поставьте точку (.) И введите FIND. Вы должны увидеть свойство НАЙТИ.
Шаг 5: Выберите свойство НАЙТИ и откройте скобку.
Шаг 6: Наш первый аргумент - это то, что мы ищем. Чтобы выделить аргумент, мы можем передать аргумент наподобие What: =, это будет полезно для определения того, на какой параметр мы ссылаемся.
Код:
Шаг 7: Последняя часть после нахождения слова, что мы хотим сделать. Нам нужно выбрать слово, поэтому передайте аргумент как. Выберите
Код:
Шаг 8: Затем запустите этот код, используя клавишу F5 или вручную, как показано на рисунке, чтобы он выбрал первое найденное слово Джонсон, которое содержит слово Джон.
Функция поиска VBA - пример № 2
Теперь я покажу вам, как найти слово комментария, используя метод find. У меня есть данные, и в трех ячейках у меня есть комментарий.
В ячейках с красным флажком есть комментарии. Из этого комментария я хочу найти слово «Без комиссии».
Шаг 1: начните код с упоминания диапазона («D2: D11») и поставьте точку (.) И введите Find
Код:
Шаг 2: В аргументе WHAT введите слово «Без комиссии».
Код:
Шаг 3: Пропустите часть After и выберите часть LookIn. В части LookIn мы ищем это слово в комментариях, поэтому выберите xlComments, а затем передайте аргумент как .Select
Код:
Шаг 4: Теперь запустите этот код, используя клавишу F5 или вручную, как показано на рисунке, чтобы он выбрал ячейку с комментарием «Без комиссии». В ячейке D9 есть упомянутый комментарий.
Если искомое слово не будет найдено в диапазоне, мы предоставили код VBA, который будет возвращать ошибку, подобную этой.
Чтобы показать пользователю, что искомое значение недоступно, нам понадобится приведенный ниже код.
То, что нужно запомнить
- VBA FIND является частью свойства RANGE, и вам нужно использовать FIND только после выбора диапазона.
- В FIND первый параметр является обязательным (What), кроме этого все остальное является необязательным.
- Если вам нужно найти значение после определенной ячейки, вы можете упомянуть ячейку в параметре After синтаксиса Find.
Рекомендуемые статьи
Это было руководство к функции поиска VBA. Здесь мы обсудили VBA Find и как использовать функцию Excel VBA Find вместе с некоторыми практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Читайте также: