Błąd VBA 1004 - nie powiodła się metoda wyboru klasy zakresu
Pierwszy raz plakat, więc jeśli jest jakieś formatowanie lub wytyczne, których nie przestrzegałem, daj mi znać, abym mógł to naprawić.
W zasadzie pytam użytkownika o katalog plików w pliku Excela, a następnie ustawiam niektóre zmienne (pierwotnie ustawione jako publiczne jako zmienne projektu, ponieważ były one używane i zmieniane w innych miejscach). Dodałem również wiersze, aby ustawić te zmienne na nic (tak na wszelki wypadek, nie sądzę, żeby to miało znaczenie). Następnie ustawiam te zmienne na plik programu Excel, skoroszyt i arkusze, do których chcę uzyskać dostęp.
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
Dlatego stworzyłem dwie różne zmienne arkusza „sourceSheets” i „sourceSheetsSum”, kod działa, gdy używam „sourceSheets”, ale błąd 1004 pojawia się, gdy używam „sourceSheetsSum”. Wypróbowałem również kod z całkowicie usuniętą zmienną „sourceSheet”, w przypadku, gdy z jakiegoś powodu nadpisano „sourceSheetSum”.
Jestem przekonany, że skoroszyt i arkusze excela istnieją i są poprawnie wywoływane, ponieważ uruchomiłem krótki fragment kodu, aby przechodzić przez wszystkie arkusze w skoroszycie i wyświetlać nazwy pokazane poniżej.
For j = 1 To sourceBook.Sheets.Count
Debug.Print (Sheets(j).name)
Next j
Z wyjściem debugowania
Pomiary
Podsumowanie analizy
Ustawienia analizy
Czy więc ktoś ma jakieś pomysły, co może oznaczać ten błąd, lub jak mogę znaleźć więcej informacji na temat tego, czym właściwie jest błąd?
EDYCJA: Więc postanowiłem dodać trochę do listy nazw arkuszy, nie wiem, czy to w ogóle pomoże.
For j = 1 To sourceBook.Sheets.Count
listSheet(j) = Sheets(j).name
Next j
Debug.Print (listSheet(2))
Set sourceSheetSum = sourceBook.Sheets(listSheet(2))
Debugowanie drukuje Podsumowanie analizy, więc wiem, że arkusz istnieje w skoroszycie i nie powinno być żadnych problemów z „literówką” w nazwach.
Kod nadal ma ten sam błąd w tej samej linii.
deusxmach1na: Myślę, że chciałeś, żebym się zmienił
Dim sourceXL As Variant
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceSheet = sourceBook.Sheets("Measurements")
Do
Dim sourceXL As Excel.Application
Dim sourceBook As Excel.Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet
Set sourceSheet = sourceBook.Worksheets("Measurements")
Ale to nie zmienia błędu, pamiętam, że był podobny do tego, a potem zmienił go, ponieważ przeczytałem, że ten wariant jest jak złapany, a nie taki solidny na jakim wariancie.