Excel VBA: работает Index-Match - PullRequest
0 голосов
/ 01 мая 2019

У меня есть пользовательская форма excel, которая извлекает данные из рабочего листа. Пользователь выбирает OptionButton рядом с текстовым полем (всего 13), содержащим тему, о которой он хотел бы узнать дополнительную информацию. Индексное совпадение (функция листа) затем возвращает совпадающие данные из ячеек, чтобы заполнить дополнительные текстовые поля в пользовательской форме. У меня более 100 ячеек в массиве листа, которые можно использовать для заполнения текстовых полей, рядом с которыми находятся переключатели. Код соответствия индекса, который я использую, работает на всех из них, но пять, и я не могу понять, почему! Код ошибки: «Ошибка времени выполнения 1004: невозможно получить свойство Match класса рабочего листа»

Я пробовал следующее: - убедиться, что все ячейки в массиве отформатированы одинаково (все они отформатированы как «Общие»). Я также попытался отформатировать их как «Текст». Неудачно - проверка, чтобы убедиться, что в ячейках нет скрытых символов (я копировал / вставлял их в блокнот, проверял символы, а затем копировал их обратно в Excel). - убедитесь, что ячейки действительно имеют совпадения, скопировав их на чистый лист и используя «проверку на наличие дубликатов» - Я попытался скопировать форматирование ячейки, которая ведет себя правильно, на ячейки, которые этого не делают.

Вот где это становится странным. Все ячейки содержат строки текста, оканчивающиеся на что-то похожее на "<T6-1.1.A.01>" (не включая кавычки). Это позволяет пользователю узнать, где в справочном руководстве отдела появились строки текста.

Для ячеек с ошибками сопоставления, если я удаляю содержимое из массива индекса и массива совпадения и заменяю его каким-нибудь простым текстом, таким как «яблоко», код работает нормально. Однако, как только я подхожу к концу и получаю строку, которая заканчивается в некоторых из следующих комбинаций (включая угловые скобки), код перестает работать

<5.A> <.5.A> <5.5.5> <5-1.1.A> <5-1.1, A> <5-1.1 A> <5-1.1A> <5-1 1A >

5-1.1.A (без скобок)

Вот так выглядит мой код (для случаев, когда он работает, а где нет). Объекты, на которые я ссылаюсь в коде, называются диапазонами из моей рабочей таблицы. Они все одинаковой длины.

 TextBoxInspection.Text=Application.WorksheetFunction.Index
 (Sheets("Sheet4").Range("InspectionTime"),Application.WorksheetFunction
 .Match(TextBox13.Value,Sheets("Sheet4").Range("InspectionCat"),0),1)

Я довольно новичок в VBA и не могу понять это. У кого-нибудь есть идея, что вызывает это?

...