VBA Excel Значение отображается как целое число, а текст - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь выполнить Vlookup в VBA и получаю

несоответствие типов Ошибка 13.

Код ниже:

Dim CSVName As String
Dim ThisBook As String
Dim Vlook As Variant

Vlook = Application.VLookup(Workbooks(CSVName).Worksheets(Sheet1).Range("A1").Value, Workbooks(ThisBook).Worksheets("Macro").Range("N1:N50").Value, 1, False)

Когда я применяю значение CSVName к окну часов, оно появляется с типом (Variant / Int), когда в файле в вопросах есть текст. Ячейка содержит («BALANCING_SEGMENT»).Что я не могу понять.Что мне здесь не хватает?Цель этого состоит в том, чтобы проверить значение в CSVName по списку и вернуть 1, если его в списке, а не, если его нет, затем обработать оператор if.

Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

Если вы не объявили и не инициализировали где-то еще переменную с именем Sheet1, целочисленного типа или строкового типа, вы пропускаете двойные кавычки вокруг Sheet1.То же самое относится и к ThisBook.

. Возможно, в рабочей книге, где находится ваш код, есть свойство CodeName Sheet1;коллекция Worksheets () ожидает целочисленный индекс или строковый идентификатор, а не тип Worksheet, следовательно, ошибка несоответствия типов.

Если при использовании Workbooks(ThisBook) вы пытаетесь обратиться к книге, где коднаходится, просто используйте ThisWorkbook.

Последняя строка будет:

Vlook = Application.VLookup(Workbooks(CSVName).Worksheets("Sheet1").Range("A1").Value, ThisWorkbook.Worksheets("Macro").Range("N1:N50").Value, 1, False)

Если из окна свойств VBE вы назначите правильное (Name) значение для вашего "«Макрос», например MacroWs, вы сможете ссылаться на него непосредственно по этому имени в вашем коде, если код выполняется в книге, в которой размещается лист.Тогда вы можете перейти:

Vlook = Application.VLookup(Workbooks(CSVName).Worksheets("Sheet1").Range("A1").Value, MacroWs.Range("N1:N50").Value, 1, False)

... и ваш код будет невосприимчив к возможному переименованию листа Macro в другое.

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