Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70829 Skopiuj do schowka Za długa procedura....
Autor Wiadomość
marzatela 
Excel Expert



Zaproszone osoby: 328
Pomogła: 470 razy
Posty: 2695
Wysłany: 14-05-2021, 16:49   Za długa procedura....

Nie wiem, czy i ewentualnie kiedy mi się to ostatnio zdarzyło, więc nie pamiętam szczegółów i ograniczeń modułów VBA. I wprawdzie nie w Excelu, a w Accessie, ale wydaje mi się, że działa to tak samo.
Jest sobie procedura w module ogólnym VBA. Faktycznie długa - Select Case z 8 warunkami, w każdym z warunków sporo linii kodu ustawiających głównie widoczność poszczególnych formantów formularza, żadnych obliczeń, wyszukiwań itp. Wszystko działa poprawnie, program bez problemu tez się kompiluje. U klienta prawie też - na jednym z komputerów aplikacja tez działa prawidłowo (również kod VBA), ale tylko do momentu otwarcia formularza, którego kontrolki są sterowane tą procedurą. Pokazuje się komunikat "To large procedure...", oczywiście na tym komputerze kod nie daje się też skompilować. OK, jest to zrozumiałe i wiadomo jak sobie z tym poradzić - kod z każdego Case przerzuciłam do kilku procedur i pod każdym warunkiem jest teraz tylko jednak linia kodu wywołująca te (pod)procedury. Pomogło i działa bez problemu.
A ja się teraz zastanawiam - dlaczego działało to u mnie i na pozostałych komputerach klienta, a tylko na tym jednym komputerze nie? Klient ma pakiet Accessa 2013 (ja 2010). Wprawdzie nie sprawdzałam parametrów samego komputera, ale mają tam poinstalowane różne programy do obróbki graficznej, więc raczej są wysokie. Choć w tym jednym przypadku Windows jest Home, a nie Proffessional, ale to chyba nie może być przyczyną?
_________________
marzatela

http://www.szultaset.pl
ID posta: 404833 Skopiuj do schowka
 
 
Radosław Poprawski 
ExcelSpec


Wersja: Win Office 365
Pomógł: 141 razy
Posty: 1291
Wysłany: 14-05-2021, 17:02   

a biblioteki?
mo ze z jakiejś przyczyny coś jest wyłączone gdy nie powinno być?

albo moze byc takie cudo jak u mnie.
czyli pomimo wejscia na office.com i przeintalowania office na 64bit i dotego najnowszy to i tak PQ instaluje sie bez mozliwosci pobierania danych z pdf i dla tego elemtnu jest konieczne zdobycie specjalnej zgody...

moze coś w ten desen?
ID posta: 404836 Skopiuj do schowka
 
 
marzatela 
Excel Expert



Zaproszone osoby: 328
Pomogła: 470 razy
Posty: 2695
Wysłany: 14-05-2021, 17:53   

Sprawdzałam, w referencjach niczego nie brakuje.
_________________
marzatela

http://www.szultaset.pl
ID posta: 404838 Skopiuj do schowka
 
 
Rafał B. 
ExcelSpec



Wersja: Win Office 2021
Pomógł: 82 razy
Posty: 482
Wysłany: 14-05-2021, 18:00   

Nie spotkałem się, ale podejrzewam jakiś problem x32/x64 (VB6/VB7).
Ale swoją drogą to dobrze, że ten błąd wymusił poprawę jakości Twojego kodu i w rezultacie nie wyprodukowałaś tasiemca na kilkaset linijek.
_________________
Częstym błędem jest zakładanie, że autorzy niezrozumiałego kodu będą w jakiś sposób potrafili wyrazić się jasno i klarownie w komentarzach. Kevlin Henney
ID posta: 404839 Skopiuj do schowka
 
 
marzatela 
Excel Expert



Zaproszone osoby: 328
Pomogła: 470 razy
Posty: 2695
Wysłany: 14-05-2021, 18:47   

Możesz mieć rację, tego akurat nie sprawdzałam. I fakt - mój błąd z taką długą procedurą. W sumie bardziej się bałam, że w pewnym momencie okaże się, że skończy mi się możliwość dopisania kolejnych linijek kodu w module formularza (tu też są jakieś ograniczenia), dlatego uciekam z wieloma procedurami do modułów ogólnych.
_________________
marzatela

http://www.szultaset.pl
ID posta: 404841 Skopiuj do schowka
 
 
Artik 
Artik



Wersja: Win Office 365
Pomógł: 3256 razy
Posty: 10762
Wysłany: 24-05-2021, 01:40   

marzatela napisał/a:
nie pamiętam szczegółów i ograniczeń modułów VBA.
Co do zbyt długiej procedury Bill mówi:
Cytat:
Po skompilowaniu kod procedury nie może przekraczać 64 KB. Ten błąd ma następującą przyczynę i rozwiązanie:

Po kompilacji kod tej procedury przekracza 64 KB. Podziel ją i wszystkie inne duże procedury na dwie lub więcej mniejszych procedur.
Mówi to o jednej procedurze. Ale... Doświadczenie mówi jeszcze o miękkim ograniczeniu wielkości modułu. Nie powinniśmy przekraczać 64 KB kodu w jednym module, bo VBA może zachowywać się niestabilnie (nieoczekiwane błędy, mimo że mamy pewność, że kod nie zawiera błędów; czasem działa prawidłowo, a czasem coś się wykrzacza).
Wielkość modułu można monitorować małym narzędziem VBE Tools, o którym wspominam w tym wątku.

Artik
_________________
Persistence is a virtue in the world of programming.
Weryfikator NIP - szybka, masowa weryfikacja w MF i VIES.
ID posta: 405235 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona uĹźywa plikĂłw cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przegl�darce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe