Niecały miesiąc temu testowałem makro, którego celem było wprowadzenie pewnych zmian estetycznych w arkuszu docelowym. Ku mojemu ogromnemu zdziwieniu, kod zaczął wyrzucać błędy w linijce odpowiadającej za ukrywanie kolumn!
Dziwny Błąd
To bardzo rzadka sytuacja ponieważ operacja wydaje się banalnie prosta. Co więcej, wcześniej kod działał bez zarzutu.
Tym razem jednak, przy każdej próbie uruchomienia makra, otrzymywałem błąd nr 1004 i komunikat Unable to set the Hidden property of the Range class. Błąd składni nie wchodził w tym przypadku w grę, zacząłem więc szukać rozwiązania w internecie…
Rozwiązanie Problemu
Większość osób wskazywało na fakt, że arkusz może być chroniony, w moim przypadku tak jednak nie było.
Poświęciłem bodajże 2-3 godziny na szukanie rozwiązania, aż w końcu natrafiłem na ten wpis z 2007 roku. Autor pisze, że należy sprawdzić czy w komórkach, które chcemy ukryć nie znajdują się … komentarze.
Pomyślałem sobie “a co ma piernik, do wiatraka?”, ale na wszelki wypadek sprawdziłem również ten wariant.
To było to! Faktycznie, okazało się, że w mojej tabeli zawarty był jeden niewinny komentarz i próba ukrycia całej kolumny generowała błąd.
Jest to dziwne, bo w przypadku ręcznego ukrycia danych zawierających komentarze, nie ma żadnego problemu. Problem pojawia się, gdy chcemy to zrobić za pomocą VBA.
Czyli warunkiem koniecznym ukrycia wierszy/kolumn jest wcześniejsze usunięcie komentarzy z komórek (metoda ClearComments, a nie instrukcja SpecialCells(Type:=xlComments).Clear).