Przeglądałem w Internecie tyle, ile mogłem (z wyjątkiem witryny pomocy technicznej firmy Microsoft, która z jakiegoś powodu jest zablokowana w pracy). Próbuję po prostu pominąć błąd. Mój napisany tutaj kod jest uproszczony, ale powinien działać w ten sam sposób.Łatwa obsługa błędów VBA Excel
Co mój kod ma robić: Jeden z moich Subs tworzy kształty w pętli i nazwy im (btn_1, btn_2, etc). Ale przed ich utworzeniem wywołuje sub, który próbuje je usunąć, aby nie tworzyć duplikatów. Ten sub przez pętle (btn_1, btn_2, etc) i usuwa kształtów przy użyciu:
for i = 1 to (a certain number)
Set shp = f_overview.Shapes("btn_" & i)
shp.delete
next
Oczywiście, zdarza się, że kształt nie może być usunięty, ponieważ po prostu nie istnieje. Zauważyłem, że przez większość czasu zalecana poprawka polega na dodawaniu (po wznowieniu błędu następnej) przed ustawieniem kształtu, ponieważ pojawia się komunikat o błędzie, że nie istnieje. Próbowałem go wewnątrz pętli, przed pętlą, etc, tak:
for i = 1 to (a certain number)
On Error Resume Next
Set shp = f_overview.Shapes("btn_" & i)
shp.delete
next
O ile rozumiem, to ma prawo do pętli poprzez jeżeli kształt nie istnieje, ale wciąż ten sam błąd niezależnie od tego, czy dodaję błąd wznowienia błędu dalej! Co ja robię źle?
EDYCJA: Nie ma błędu, gdy kształty istnieją.
Dzięki! Ciągle próbowałem sugestii innych odbierających i wszystko zawiedzie. Właśnie dlatego, mimo że dostarczyli cennych informacji! –
@ DavidGrand'Maison Zgadzam się, że obsługa błędów wykonywana w innych odpowiedziach jest czystsza i lepsza. Ale twój oryginalny kod powinien zadziałać. – Degustaf