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:(
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
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ć?
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 zamiastDim Konczymy As Booleanspróbuj
Public Konczymy As Boolean
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
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 RUNDim 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
