Zdobywając coraz większą wiedzę i doświadczenie w obszarze VBA zaczynamy tworzyć coraz bardziej rozbudwoane linie kodu. Szczególnie referencje do złożonych obiektów przestają być problematyczne dzięki coraz lepszemu rozumieniu hierarchii obiektów i samych obiektów i kolekcji. W pewnych sytuacjach zdarzyć się może, że określona linia kodu będzie mieć następującą schematyczną postać:
2 | Set myObject = Object . Object . Object . Object . Object |
lub w konkretnym przykładzie:
2 | Set Komentarz = ActiveCell.Comment.Shape.TextFrame2.TextRange |
Jeżeli nasza referencja jest błędna zwrócony zostanie błąd 445: `Object doesn’t support this action`. Pytanie jednak- której ‘akcji’? jeżeli wszystko wydaje się być poprawne czasem trudno o szybkie odnalezienie błędu. Najprostszym rozwiązaniem jest więc rozbicie poszczególnych elementów składowych naszego kodu na kolejne zmienne. W tym wariancie błąd zostanie zwrócony w linii ze wskazaniem konkretnej właściwości/obiektu, który jest błędny. Poniżej dwa przykłady takiego ‘sprytnego debugowania’- wariant krótki bez deklaracji konkretnego oczekiwanego typu obiektu oraz wariant rozbudowany definiujący konkretne typy obiektów (zalecany).
01 | Sub SprytneDebugowanie() |
03 | Dim Komentarz As Object |
04 | Set Komentarz = ActiveCell.Comment.Shape.TextFrame2.TextRange |
08 | Set A = ActiveCell.Comment |
15 | Sub SprytneDebugowanie2() |
17 | Dim Komentarz As Object |
18 | Set Komentarz = ActiveCell.Comment.Shape.TextFrame2.TextRange |
25 | Set A = ActiveCell.Comment |
Brak komentarzy:
Prześlij komentarz