Ostatnio w pracy przydarzyła mi się bardzo dziwna sytuacja związana z działaniem aplikacji do generowania zamówień do dużej sieci handlowej.
Problem
Okazało się, że jedno z makr, które działało rewelacyjnie przez ponad 2,5 roku nagle zaczęło wyrzucać błąd!
Sytuacja była dla mnie o tyle dziwna, że błąd pojawił się prawie na samym początku kodu, przy próbie zaczytania sporej ilości danych do tablicy.
Numer błędu 6 (Overflow) czyli tzw. przepełnienie bufora, które ma zazwyczaj miejsce w sytuacji, gdy próbujemy zmiennej przypisać zbyt dużą liczbę. Hmm…. Dziwne….
Nie bardzo potrafiłem zrozumieć skąd się wziął ten błąd. Moją pierwszą myślą było to, że zwiększył się zakres komórek, który chciałem przenieść do tablicy. Z drugiej strony wydawało mi się to trochę irracjonalne, że zwiększenie zakresu o ok. 54 000 komórek (600 wierszy więcej przy stałej liczbie 90 kolumn) spowodował problem.
Do tablicy wirtualnej możemy przypisywać znacznie większe zakresy – nawet takie, które składają się z 6 000 wierszy i ok. 90 kolumn (czyli w sumie 540 000 komórek – 10 razy więcej danych niż w mojej tabeli!), co potwierdziło się w testach gdzie zaczytałem zupełnie inne dane.
Rozwiązanie
Po skopiowaniu (bez formatów) tabeli do osobnego arkusza problem dalej się pojawiał, ale od razu rzuciły mi się w oczy dziwne wartości w jednej z kolumn.
Tam gdzie spodziewałem się cyfr od 1 do 4 pojawiły się ogromne liczby, których Excel nie potrafił w całości poprawnie wyświetlić. Były to kody kreskowe (format liczbowy uciął poprzedzające zera) składające się z kilkunastu cyfr.
Jak się później okazało, wystąpił błąd w raporcie źródłowym i został on niejako powielony w narzędziu. Excel nie mógł tych wielkich liczb zaczytać do tablicy dlatego wyświetlał błąd podczas próby ich przeniesienia.