2012-07-18 9 views
6

Mój klient otrzymuje błąd kompilacji; Nie można znaleźć projektu lub biblioteki na jego wersji programu Excel 2010, jednak nie otrzymuję tego w mojej wersji 2010. Jak mogę dostosować ten kod, aby się nie pojawił. Gdy pojawi się błąd w następującym kodzie tekst „komórkę” w „dla każdej komórki w selekcji” jest podświetlony:Otrzymuję komunikat "Błąd kompilacji: Nie można znaleźć projektu lub biblioteki" tylko w niektórych wersjach programu Excel 2010. Trudne do przetestowania tego

Private Sub Worksheet_Change(ByVal Target As Range) 
If Target.Address = "$B$9" Then 
Columns("D:CB").Select 
Selection.EntireColumn.Hidden = False 
Application.ScreenUpdating = False 

Sheet17.Range("E48:CB48").Select 

For Each cell In Selection 
    If cell = 0 Then 
     Range(cell.Address).EntireColumn.Hidden = True 
    End If 
Next 

Application.ScreenUpdating = True 
Sheet17.Range("b9").Select 
End If 

End Sub` 

Mój klient jest także zgłaszania błędów w poniższym kodzie ze słowem „odpowiedź” jest podświetlony . To również nie jest problemem dla mnie, w mojej wersji programu Excel 2010. Każda pomoc jest bardzo doceniana.

If Sheet1.Range("E18") = 3 Then 
Response = MsgBox("Reminder Emails have been set to be sent automatically at " &    Sheet1.Range("f18").Value & ", " & Sheet1.Range("Q4").Value & " day(s) before" & vbCrLf & "the scheduled appointment. Do you want to send reminder e-mails now anyway?", vbYesNo) 
    If Response = vbNo Then 
    Exit Sub 
    End If 
    End If 
+0

Używasz 'Response' do przechowywania długiej zmiennej, więc nie powinno to powodować błędu (chyba że' Response' jest częścią modelu obiektowego odniesienia biblioteki - zgadnij). Używałbym 'lngResponse' dla nazwy i wymiaru tak długo. – brettdj

+2

Może to być identyczne z: http://stackoverflow.com/questions/507191/cant-find-project-lub-library-for-standard-vba-functions – Smandoli

+0

OK, spróbuję. Ponieważ na moim komputerze wszystkie te opcje działają dobrze, muszę czekać na opinie klientów, co jest nieco frustrujące. Jeszcze raz bardzo dziękuję – ExcelForFreelancers

Odpowiedz

9

W oknie VBA, przejdź do Tools --> References i zapewnić te same biblioteki są włączane dla wszystkich komputerów. Upewnij się również, że wszystkie aktywne biblioteki są w tej samej kolejności od góry do dołu.

Wiele bibliotek "jest standardem", ale trzeba mieć włączoną opcję. Lub może być konieczne odłączenie odniesienia biblioteki od od z powodu zakłóceń funkcjonalnych. Biblioteka może być kompletnie pomijana, ale wątpię, aby tak było, ponieważ jest to dość standardowy pakiet i nie jesteś świadomy, że go majstrowałeś.

Jest to typowy problem, który zazwyczaj nie jest zbyt dużym obciążeniem dla klientów z dystrybucji. Jeśli tak, możesz przerobić swój kod, aby użyć mniejszej liczby referencji; albo możesz być w stanie load the needed libraries programmatically (ale nigdy tego nie próbowałem).

Proponuję dołączyć Option Explicit u góry wszystkich modułów. Ten problem wygląda trochę jak nie zadeklarowanie zmiennych; i myślę, że ten wymóg może się różnić w zależności od ustawienia. Option Explicit wymusi zadeklarowanie wszystkich zmiennych, co jest korzystne w ogólności i może spowodować, że wszystkie instalacje klienta będą działać tak samo.

+0

Ok, wiedziałem o tym, ale miałem nadzieję, że coś jest nie tak z moim kodem, więc nie musiałbym prosić klienta o zrobienie tego. W oparciu o twoją odpowiedź poproszę go o sprawdzenie jego bibliotek VBA zgodnie z sugestią. (Mam nadzieję, że to rzadkie wydarzenie, ponieważ ta aplikacja będzie szeroko rozpowszechniana) Dziękuję za szybkie udzielenie odpowiedzi – ExcelForFreelancers

+0

@raphuket Biblioteki powinny być włączone ** automatycznie ** - tj. Problem jest ich brak w maszynie, a nie nie przełączany – brettdj

+0

@brettdj Hmmmm, Ok. Oczywiście jestem nowy w VBA i właśnie wysłałem do mojego klienta wiadomość e-mail z instrukcjami, aby to sprawdzić. Jeśli jego biblioteki "zaginęły", zgaduję, że potrzebna byłaby tylko ponowna instalacja programu excel? A może jest to "brakująca biblioteka", którą może zainstalować, czy mogę go wysłać? Przepraszamy za wszystkie pytania, ale jeśli jest to powszechny problem z innymi klientami, będę musiał znaleźć obejście. – ExcelForFreelancers