ID tematu: 70829
 |
Za długa procedura.... |
Autor |
Wiadomość |
marzatela
Excel Expert


Zaproszone osoby: 328
Wersja: Win Office 2019
Pomogła: 473 razy Posty: 2711
|
Wysłany: 14-05-2021, 15: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
https://excel.marzatela.pl
https://access.marzatela.pl
A tu możesz mi postawić kawę:
https://buycoffee.to/marzatela |
|
 | ID posta:
404833
|
|
|
 |
|
|
|
Radosław Poprawski
ExcelSpec

Wersja: Win Office 365
Pomógł: 141 razy Posty: 1291
|
Wysłany: 14-05-2021, 16: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
|
|
|
 |
|
|
marzatela
Excel Expert


Zaproszone osoby: 328
Wersja: Win Office 2019
Pomogła: 473 razy Posty: 2711
|
|
 | ID posta:
404838
|
|
|
 |
|
|
Rafał B.
ExcelSpec


Wersja: Win Office 2021
Pomógł: 91 razy Posty: 519
|
Wysłany: 14-05-2021, 17: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. |
_________________ W erze zaawansowanych narzędzi LLM takich jak GPT 50% problemów użytkowników forum może być efektywnie rozwiązanych przez nich samych za pomocą tych narzędzi. Jednak często bardziej cenią swój czas niż czas tych, którzy oferują tutaj pomoc. |
|
 | ID posta:
404839
|
|
|
 |
|
|
marzatela
Excel Expert


Zaproszone osoby: 328
Wersja: Win Office 2019
Pomogła: 473 razy Posty: 2711
|
Wysłany: 14-05-2021, 17: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
https://excel.marzatela.pl
https://access.marzatela.pl
A tu możesz mi postawić kawę:
https://buycoffee.to/marzatela |
|
 | ID posta:
404841
|
|
|
 |
|
|
Artik
Artik


Wersja: Win Office 365
Pomógł: 3268 razy Posty: 10789
|
Wysłany: 24-05-2021, 00: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
|
|
|
 |
|
|
|
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
|
|
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
|