Ошибка VBA 1004 - не удалось выбрать метод класса диапазона
Первый постер, так что если есть какое-либо форматирование или рекомендации, которых я не придерживался, пожалуйста, дайте мне знать, чтобы я мог это исправить.
Поэтому я в основном спрашиваю пользователя о каталоге файлов в файле Excel, а затем устанавливаю некоторые переменные (изначально они были установлены как public как переменные проекта, поскольку они использовались и изменялись в других местах). Я также добавил строки, чтобы установить эти переменные в ноль (на всякий случай, я не думаю, что это должно иметь значение). Затем я устанавливаю эти переменные в файл Excel, рабочую книгу и листы, к которым я хочу получить доступ.
Dim filepath as String
filePath = CStr(fileDialog) 'ask file dir, set to string
Dim sourceXL As Variant 'these three were orig project variables
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceXL = Nothing 'set to nothing in case...?
Set sourceBook = Nothing
Set sourceSheet = Nothing
Set sourceSheetSum = Nothing
Set sourceXL = Excel.Application 'set to the paths needed
Set sourceBook = sourceXL.Workbooks.Open(filePath)
Set sourceSheet = sourceBook.Sheets("Measurements")
Set sourceSheetSum = sourceBook.Sheets("Analysis Summary")
Dim measName As Variant 'create variable to access later
Dim partName As Variant
sourceSheetSum.Range("C3").Select 'THIS IS THE PROBLEM LINE
measName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value
sourceSheetSum.Range("D3").Select
partName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value
Таким образом, я создал две разные переменные листа: «sourceSheets». и «sourceSheetsSum», код работает, если я использую «sourceSheets», но ошибка 1004 возникает, если я использую «sourceSheetsSum». Я также пробовал код с переменной «aS; sourceSheet» ». полностью удален, в случае, если это переопределяет «sourceSheetSum»; по какой-то причине.
Я вполне уверен, что книга и листы Excel существуют и правильно называются, так как я быстро выполнил код, чтобы просмотреть все листы в книге и вывести имена, как показано ниже.
For j = 1 To sourceBook.Sheets.Count
Debug.Print (Sheets(j).name)
Next j
С выходом отладки
Measurements
Analysis Summary
Analysis Settings
Итак, есть ли у кого-нибудь идеи, что может означать эта ошибка, или как я могу узнать больше о том, что на самом деле является ошибка?
РЕДАКТИРОВАТЬ: Поэтому я решил немного добавить к списку имен листов, не уверен, поможет ли это вообще.
For j = 1 To sourceBook.Sheets.Count
listSheet(j) = Sheets(j).name
Next j
Debug.Print (listSheet(2))
Set sourceSheetSum = sourceBook.Sheets(listSheet(2))
Отладка печатает сводку анализа, так что я знаю, что лист существует в рабочей книге, и не должно быть никаких проблем с «опечаткой». в именах.
Код все еще имеет ту же ошибку в той же строке, хотя.
deusxmach1na: я думаю, ты хотел, чтобы я изменился
Dim sourceXL As Variant
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceSheet = sourceBook.Sheets("Measurements")
к
Dim sourceXL As Excel.Application
Dim sourceBook As Excel.Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet
Set sourceSheet = sourceBook.Worksheets("Measurements")
Но это не меняет ошибку, я помню, что она была похожа на эту, а затем изменила ее, так как я прочитал, что этот вариант похож на ловушку, а не на то, что это за вариант.