Метод Range Find, показывающий String как целое число и, следовательно, показывающий ошибку несоответствия типов - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь найти, если комментарий в Sheet1.Cells (1,1) уже обновлен / доступен в мастер-листе (т.е. Sheet2) в диапазоне, как показано ниже, с помощью Range Find.

Dim Find_Comment As Range
Set Find_Comment = Sheet2.Range(Cells(1, 1), Cells(1, 5)).Find(what:=Sheet1.Cells(1, 1))

Это работает в 99% случаев, но один комментарий, который я прилагаю ниже, дает мне Ошибка несоответствия типов .

Комментарий:

Говорил с Mr.XYZ on 9900000099, сказал, что в целом доволен и оценил 5/5 баллов. Озабоченность - Заказчик сказал, что рулевая тяга на скорости 60-70 на ровной дороге и боковой жирной гайкой не была доступна в выставочном зале во время работы. Говорил Mr.XYA по телефону 9900000099, сказал, что в целом удовлетворен обслуживанием и получил оценку 5/5.

В окне просмотра LHS, т. Е. Find_Comment, отображается как Тип диапазона тогда как RHS, то есть Sheet2.Range(Cells(1, 1), Cells(1, 5)).Find(what:=Sheet1.Cells(1, 1)), отображается как Целочисленный тип .

Комментарий содержит несколько пробелов, неправильное использование знаков препинания и даже пару разрывов строки (включая разрыв строки в конец комментария)

Могу ли я узнать, что мне нужно сделать, чтобы решить эту проблему Ошибка несоответствия типов ?

1 Ответ

1 голос
/ 10 апреля 2020

основная проблема заключается в длине искомой строки: Find() принимает до 255 символов

, поэтому, если это соответствует вашим потребностям, вы можете использовать

    Dim Find_Comment As Range
    With Sheet2
        Set Find_Comment = .Range(.Cells(1, 1), .Cells(1, 5)).Find(what:=Left$(Sheet1.Cells(1, 1).Value, 255), LookIn:=xlValues, lookAt:=xlPart)
    End With

как см:

  • использовать блок With .. End With для ссылки на конкретный объект c (в данном случае Sheet2) и внутри него использовать точки (.) перед каждым дочерним элементом (например, Range, Cells,…), чтобы убедиться, что они принадлежат указанному объекту

  • использовать функцию Left$(), чтобы обрезать искомую строку до 255 символов

  • Вы всегда хотите явно объявить параметры LookAt и LookIn метода Range.Find(), так как их значения по умолчанию принимаются в качестве их последних использованных значений даже из интерфейса пользовательского интерфейса Excel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...