Temat: Zakończenie procedury głównej z procedury wywołanej

Witam,

Mam takie makro które wywołuje w swojej procedurze inne (to oczywiscie tylko część makra:)

Sub AktualizacjaPoranna()

Call Run("KopiowanieBazyDanych")
Call Run("KopiowanieDanzchMB51ZPLIKU")
Call Run("AktualizacjaZamówieniaME2L")


End Sub


Sub() KopiowanieBazyDanych
If ActiveCell.Value <> "Skł." Then
MsgBox ("zły układ wybrany w SAP przy aktualizacji. Zaktualizuj jeszcze raz dane z na dysku sieciowym zgdodnie z instrukcją numer 2 ")
Exit Sub
Else
Sheets("MAGAZYN").Select
End Sub


I teraz chciałbym aby w przypadku gdy makrze "KopiowanieBazyDanych"

spełniony będzie warunek If procedura kończyła działanie makra KopiowanieBazyDanych jak i procedury z której została wywołana czyli "AktualizacjaPoranna()" czy jest to możliwe???

Obecnie w przypadku spełnienia If makro kończy tylko działanie procedury "KopiowanieBazyDanych" i dalej wykonuje kolejne:(

Temat: Zakończenie procedury głównej z procedury wywołanej

Dim Konczymy   As Boolean



Sub AktualizacjaPoranna()

Application.Run ("KopiowanieBazyDanych")

If Not Konczymy Then
Application.Run Run("KopiowanieDanzchMB51ZPLIKU")
Application.Run Run("AktualizacjaZamówieniaME2L")
End If

End Sub


Sub KopiowanieBazyDanych()

If ActiveCell.Value <> "Skł." Then
MsgBox ("zły układ wybrany w SAP przy aktualizacji. Zaktualizuj jeszcze raz dane z na dysku sieciowym zgdodnie z instrukcją numer 2 ")
Konczymy = True
Exit Sub
Else
Sheets("MAGAZYN").Select
End If

End Sub

Temat: Zakończenie procedury głównej z procedury wywołanej

Zbigniew Budziewicz:
Dim Konczymy   As Boolean



Sub AktualizacjaPoranna()

Application.Run ("KopiowanieBazyDanych")

If Not Konczymy Then
Application.Run Run("KopiowanieDanzchMB51ZPLIKU")
Application.Run Run("AktualizacjaZamówieniaME2L")
End If

End Sub


Sub KopiowanieBazyDanych()

If ActiveCell.Value <> "Skł." Then
MsgBox ("zły układ wybrany w SAP przy aktualizacji. Zaktualizuj jeszcze raz dane z na dysku sieciowym zgdodnie z instrukcją numer 2 ")
Konczymy = True
Exit Sub
Else
Sheets("MAGAZYN").Select
End If

End Sub


Niestety powyzsze rozwiązanie nie działa u mnie w plik Makro AktualizacjaPoranna dalej wyowłuje procedury
Application.Run Run("KopiowanieDanzchMB51ZPLIKU")
Application.Run Run("AktualizacjaZamówieniaME2L
w przypdaku spełenia warunku If w procedurze Sub KopiowanieBazyDanych()

Z czego może to wynikać?

konto usunięte

Temat: Zakończenie procedury głównej z procedury wywołanej

Niestety szybka analiza, bo czasu mało, ale pierwsza rzecz to deklaracja zmiennej powinna być publiczna, czyli zamiast
Dim Konczymy   As Boolean
spróbuj
Public Konczymy As Boolean
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: Zakończenie procedury głównej z procedury wywołanej

Jeżeli wszystkie procedury ma w jednym module (wskazane) to deklaracja jako Dim styknie :-)

EDIT:
Innym rozwiązaniem może być celowe wywołanie błędu Err.Raise i przejście do obsługi błędów. To rozwiązanie jest nawet lepsze bo pozwoli userowi przywrócić ustawienia domyślne - jeżeli zmienił je w procedurze głównej.Mariusz Jankowski edytował(a) ten post dnia 16.12.11 o godzinie 14:24

Temat: Zakończenie procedury głównej z procedury wywołanej

oczywiście z rozpędu nie usunąłem zbędnego RUN
Dim Konczymy As Boolean


Sub AktualizacjaPoranna()

Application.Run "KopiowanieBazyDanych"

If Not Konczymy Then
Application.Run "KopiowanieDanzchMB51ZPLIKU"
Application.Run "AktualizacjaZamówieniaME2L"
End If

End Sub


Sub KopiowanieBazyDanych()

If ActiveCell.Value <> "Skł." Then
MsgBox ("zły układ wybrany w SAP przy aktualizacji. Zaktualizuj jeszcze raz dane z na dysku sieciowym zgdodnie z instrukcją numer 2 ")
Konczymy = True
Exit Sub
Else
Sheets("MAGAZYN").Select
Konczymy = False
End If

End Sub


edit...

Na etapie jakim jest pan Michał nie polecam zabawy z emulowaniem i obsługą błędów ;)Zbigniew Budziewicz edytował(a) ten post dnia 16.12.11 o godzinie 22:09



Wyślij zaproszenie do