У меня есть пользовательская форма 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 и не могу понять это. У кого-нибудь есть идея, что вызывает это?