napisał: jalamas postów: 316
umieszczony: 18 lutego 2007 18:57
edytowany: 18 lutego 2007 19:19
|
|
on error goto 0.....
proszę jeszcze raz przeczytać, co robi i zasięg, a zwłaszcza kiedy nic nie robi...
Tu nie ma żadnej "paki", że jak mówisz, każde środowisko ma swoje zasady.... na to nie ma rady....
Niemniej jednak, nie wiem po co stosować tę linijkę, przecież MZtools zapewnia generowanie podstawowej obsługi błędów.
Polecam:
http://www.visibleprogress.com/vb_error_handling.htm |
|
napisał: mcgluszak postów: 36
umieszczony: 18 lutego 2007 16:43
|
|
Masz rację, nie doczytałem.
Imo Bill dał tu trochę ciała, bo z jakiej paki on error goto pararararabumbum w procedurze wywołującej ma mieć pierwszeńśtwo przed ostatnio wykonaną linią on error goto 0.
Enyłej, dzięki za pomoc. |
|
napisał: jalamas postów: 316
umieszczony: 18 lutego 2007 14:15
edytowany: 18 lutego 2007 14:16
|
|
Jakie cudo, przecież wyraźnie w helpie vb i tutaj:
Error Handling With Multiple Procedures (Pearson)
w podanym linku jest to wyjaśnione. |
|
napisał: mcgluszak postów: 36
umieszczony: 18 lutego 2007 14:02
|
|
Dzięki za kompleksowe podejście do tematu. Ale cudo chyba na zawsze zostanie tajemnicą - poradziłem sobie starą sprawdzoną techniką: wydupcyłem wszystko w diobły i napisałem od początku. (na moje oko niczym się nie różni, ale działa) |
|
napisał: jalamas postów: 316
umieszczony: 16 lutego 2007 15:34
edytowany: 16 lutego 2007 21:21
|
|
Może tak, dodaj nowy moduł, wpisz co następuje...
Oraz potem posługując się Wywolujaca włączać opcje 1,2,3 grupami lub nic
w Wywolywana.
Potem...
Proszę też dla wszystkich tych kombinacji wykonać bezpośrednio
procedurę Wywolywana bez wywoływania !!!!!!!!!!! z innej procedury
tylko z okienka kody VBA zobaczyć rożnice
Option Explicit
Sub Wywolujaca()
On Error GoTo Wywolujaca_Error
Call Wywolywana
Wywolujaca_Exit:
On Error Resume Next
Exit Sub
Wywolujaca_Error:
MsgBox "Błąd - " & Err.Number & vbCrLf & _
"Opis - " & Err.Description & vbCrLf & _
"Procedura - " & "Wywolujaca !!!!!!!!!!!!!!!!! -przypadek - włączone 3 i 1 LUB nic LUB tylko 1 ", vbExclamation
Resume Wywolujaca_Exit
End Sub
Sub Wywolywana()
On Error GoTo Wywolywana_Error ' przypadek 3
Dim a As Double
' On Error GoTo 0 ' - 1 wyłącza obsługę błędu w bieżącej procedurze tą co była linijke wyzej !
' a skoro nie byloby zadnej to nie bylo zadnej to moze niec nie byc
' On Error Resume Next ' -2 powoduje przekazanie sterowania do instrukcji, następnej po instrukcji
a = 1 / 0
MsgBox "Było On Error Resume Next- przypadek - włączone 3 i 2 LUB tylko 2"
Wywolywana_Exit:
Exit Sub
Wywolywana_Error:
MsgBox "Mój komunikat :" & vbNewLine & "Błąd - " & Err.Number & vbCrLf & _
"Opis - " & Err.Description & vbCrLf & _
"Procedura - " & "Wywolywana przypadek właczone tylko - 3 ", vbExclamation, "Mój komunikat"
Resume Wywolywana_Exit
End Sub
patrz:
http://www.iaii.weia.po.opole.pl/dyplomy/VBasic/iso2_t/rozkazy/onerror.htm
http://www.cpearson.com/excel/ErrorHandling.htm
na dole.... |
|
napisał: mcgluszak postów: 36
umieszczony: 16 lutego 2007 11:59
|
|
Cytat: Czy należy rozumieć, że po napotkaniu błędu w procedurze B działanie makra natychmiast wyskakuje do procedury A, czy najpierw skoczy np do End Sub procedury B i dopiero potem powrót do procedury A?
wyskakuje od razu do procedury A |
|
napisał: mcgluszak postów: 36
umieszczony: 16 lutego 2007 11:50
|
|
Panowie,
nie sądze żeby to miało związek z treścią procedury. Pobawiłem się trochę i ograniczyłem ją do postaci:
Sub LoadSubreportZasiegiTimebandyyy()
On Error GoTo 0
Dim a As Double
a = 1 / 0 ''' - w tym miejscu zamiast się zatrzymać wyskakuje z procedury
End Sub
I w dalszym ciągu zamiast zatrzymać się na dzieleniu przez zero wyskakuje z procedury i wraca linijkę za call LoadSubreportZasiegiTimebandyyy
Dodatkowe hinty:
- jak calluje inną procedurę to dzieje się to samo
- jak zrobie błąd w procedurze wywołującej (przed callowaniem feralnej procedury) to obsługa błędów działa normalnie
- po callowaniu feralnej procedury wyłącza mi się obsługa "on error goto 0" i zachowuje się tak jakgdyby było "on errror resume next" (chociaż takiej linijki wogóle nie mam)
- ale jak włącze jeszcze raz "on error goto 0" to działa normalnie.
(a jak widać z przykładu kodu, w "feralnej procedurze" statement on error goto 0 jest zupełnie zlewany i niezależnie od tego jaka obsługa błędów jest włączona, po prostu wyskakuje z procedury) |
|
napisał: jalamas postów: 316
umieszczony: 16 lutego 2007 03:48
edytowany: 16 lutego 2007 03:49
|
|
Cytat:
jakiś syf powoduje
może byś tak uprzejmie zacytował te procedury.... |
|
napisał: mcgluszak postów: 36
umieszczony: 15 lutego 2007 23:03
|
|
Ghost in the shell?
Dzieje mi się następujące cudo.
Procedura A wywołuje procedurę B.
W procedurze B ze względu na istotę sprawy dałem on error resume next i sprawdzam dopiero na koniec czy błędu nie ma.
A tu niespodzianka.
W momencie napotkania błędu makro wyskakuje z procedury B i wznawia się w procedurze A, zaraz za Call B.
Mało tego.
W procedurze B zamieniam spowrotem na on error goto 0 i nic się nie zmienia: dalej jakiś syf powoduje wyskoczenie z bieżącej procedury.
Restart excela nie pomaga.
No co jest na boga?
Help, bo zaraz pojade do tego ^&#$&$# seattle i zrobię porządki. |
|
 wstecz 1 dalej  wszystkich stron: 1
|