Если вы не объявили и не инициализировали где-то еще переменную с именем 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 в другое.