Reklama: Twoja konkurencja już Cię wyprzedziła SPRAWDŹ JAK

Stwórz profil

Musisz wpisać swoje imię
Musisz wpisać swoje nazwisko
Musisz wpisać poprawny e-mail
Musisz wpisać hasło (min. 8 znaków)
Musisz zaakceptować regulamin

Michal Żołyniak Specjalista ds.
Planowania

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:(
15.12.2011, 19:36

Zbigniew Budziewicz Fan(atyk) VBA\Excel

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
15.12.2011, 20:20

Michal Żołyniak Specjalista ds.
Planowania

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ć?
16.12.2011, 11:11

Marcin Szczepanik Starszy Spec od
jakości i raportów
:)

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
16.12.2011, 12:38

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
16.12.2011, 14:22

Zbigniew Budziewicz Fan(atyk) VBA\Excel

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
16.12.2011, 21:20



Wyślij zaproszenie do