ID tematu: 833
 |
GoTo (jak zapisać) |
Autor |
Wiadomość |
m.janusz
Fan Excela

Posty: 79
|
Wysłany: 01-04-2007, 17:13 GoTo (jak zapisać)
|
|
|
Witam ponownie.
Tym razem mam problem z makrem, które powinno wrócić do konkretnego makra, ale powinno od razu wykonać skok w tym makrze do punktu np: GoTo A.
Sub makro1()
DialogSheets("Dialog2").Show
If DialogSheets("Dialog2").OptionButtons("OptKO").Value = xlOn Then Ko
End Sub
Dalej
Sub Ko()
Windows("1KAR+(03-2007).xls").Activate ' otwiera aktywny arkusz
Application.Run "'1KAR+(03-2007).xls'!No2" ( I TU POTRZEBNY JEST JAKIś ZAPIS "GoTo A"
nie umiem tego zapisać ( nadmieniam iż nie znam angielskiego)
Potrzebuje by makro No2 dalej nie wykonało kodu, tylko od razu skok do End Sub
Pozdrawiam
End Sub |
_________________ jmisiek |
|
 | ID posta:
4328
|
|
|
 |
|
|
|
Trebor
Excel Expert

Pomógł: 1752 razy Posty: 4680
|
Wysłany: 01-04-2007, 17:27
|
|
|
Niezbyt rozumiem co i jak. Czy Exit Sub będzie wystarczające?
Jeśli to za mało to może End?
Pozdrawiam |
_________________ Trebbor@wp.pl |
|
 | ID posta:
4329
|
|
|
 |
|
|
m.janusz
Fan Excela

Posty: 79
|
Wysłany: 01-04-2007, 18:36
|
|
|
Witam
Makro1, otwiera dialog, jest tam kilka opcji do wyboru. Jedna z tych opcji to rezygnacja z wyboru, ale to tylko po to by zdjąć zaznaczenia wyboru. Nie można zaznaczyć więcej jak jedną opcje, i dlatego ten wybór opcji (OptKo)czyli rezygnacja i powrót do macierzystego makra (No2) od razu do wykonania End Sub.
------------
Sub No2() 'przenoszenie do arkusza na server
Application.ScreenUpdating = False
ChDir "D:\jan"
Workbooks.Open Filename:="D:\jan\godziny-januszm.xls"
No1
Windows("1KAR+(03-2007) KLIMAT.xls").Activate
Range("E7").Select
Selection.Copy
Windows("godziny-januszm.xls").Activate
ActiveCell.Offset(0, 0).Select
ActiveSheet.Paste
L9
ActiveCell.Offset(0, 1).Select
DataWpis
L9
Windows("1KAR+(03-2007) KLIMAT.xls").Activate
Range("K7").Select
Selection.Copy
Windows("godziny-januszm.xls").Activate
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
L9
Windows("1KAR+(03-2007) KLIMAT.xls").Activate
Application.Run "'1KAR+(03-2007) KLIMAT.xls'!MakroS3"
No3
makro1 ' TU JEST TO MAKRO
' JEżELI ZREZYGNUJę TO NIE CHCę BY DALSZY KOD ZOSTAł WYKONANY
Selection.NumberFormat = "0.00"
ActiveCell.FormulaR1C1 = "=SUM(R14C12:R[-1]C)"
ActiveCell.Offset(0, 0).Select
Selection.Copy
Windows("godziny-januszm.xls").Activate
ActiveCell.Offset(0, 0).Select
ActiveSheet.Paste
L9
Ramka
ActiveWorkbook.Save
ActiveWorkbook.Close
Selection.ClearContents
A: Windows("1KAR+(03-2007) KLIMAT.xls").Activate
Application.Run "'1KAR+(03-2007) KLIMAT.xls'!MakroS4"
End Sub
-------------
Sub makro1()
DialogSheets("Dialog2").Show
If DialogSheets("Dialog2").OptionButtons("OptKO").Value = xlOn Then ko
If DialogSheets("Dialog2").OptionButtons("OptOK").Value = xlOn Then ok
If DialogSheets("Dialog2").OptionButtons("OptPO").Value = xlOn Then po
If DialogSheets("Dialog2").OptionButtons("OptPR").Value = xlOn Then pr
End Sub
----------
Sub ko()
Windows("1KAR+(03-2007) KLIMAT.xls").Activate
Application.Run "'1KAR+(03-2007) KLIMAT.xls'!No2" 'I co dalej? Makro No2 powinno się zakończyć tam gdzie wstawiłem A:
End Sub
-----------------
Pozdrawiam |
_________________ jmisiek |
|
 | ID posta:
4331
|
|
|
 |
|
|
Trebor
Excel Expert

Pomógł: 1752 razy Posty: 4680
|
Wysłany: 01-04-2007, 19:41
|
|
|
Nie wiem czy tylko nazwy makr są zbieżne czy też próbujesz wywoływać ponownie makro które wywołało makro które się wykonuje. Wiem, zamieszałem ale tak to widzę. Jeśli jakieś makro wywołuje inne makro np.
Kod: |
Sub main
call podmakro
range("A1")
end sub
|
Linia call podmakro wywołuje wykonanie makra podmakro po wykonaniu którego sterowanie powróci do linii range("A1"). I nie ma potrzeby wskazywania że tak ma się stać.
Jeśli nasze makro uzupełnimy o linię
Kod: |
Sub main
call podmakro
exit sub
range("A1")
end sub
|
To linia ta spowoduje przerwanie wykonywania makra, ale tego w którym ta linia się znajduje.
Jeśli w makrze podmakro wpiszesz linię z End np.
Kod: |
Sub podmakro
range("B10")
End
end sub
|
to po wykonaniu linii End sterowanie nigdzie już nie powróci. Zakończą się wszystkie makra i zostanie utracona wartość wszystkich zmiennych, również tych zadeklarowanych na poziomie modułu. Jeśli to jest nie do przyjęcia to można zadeklarować zmienną która przechowa naszą decyzję i uczyni ją dostępną dla innych makr. Aby tak się stało deklaracja musi nastąpić poza sub ( dobrym obyczajem jest aby była to pierwsza linia modułu) np.
Kod: |
dim zmienna as string
sub main
coś tam
end sub
|
Ale się spisałem
Pozdrawiam |
_________________ Trebbor@wp.pl |
|
 | ID posta:
4333
|
|
|
 |
|
|
m.janusz
Fan Excela

Posty: 79
|
Wysłany: 01-04-2007, 22:36
|
|
|
Witam
Tak można powiedzieć, że próbuję wykonać makro z którego zostało wykonane.
Może powiem inaczej. Chciałbym by makro1 zostało przerwane i wykonywanie kodu wróciło do macierzystego makra (No2) przeskakujęc do miejsca gdzie wstawiłem (A:).
Jednym słowem po otwarciu okna dialogu, zastanowiłem się i chcę zrezygnować z wykonania wyboru, powracajęc do (No2).
Udało mi się powrócić do tego makra, lecz kod został dalej wykonany tak jak bym dokonał jakiegoś wyboru oprócz rezygnacji.
Jutro sprawdzę co mogę wykorzystać, z Twych podpowiedzi.
Narazie dzięki.
Pozdrawiam
[ Dodano: 2007-04-02, 15:38 ]
Przespałem się z tym problemem, i doszłem do wniosku iż jest to tak proste że aż niemożliwe. Zamiast wywoływać wykonanie Makra1 z kodu głównego, poprostu kod Makra1 wpisałem do głównego, i teraz mogę zakończyć wykonanie polecenia (Optko)tak.
DialogSheets("Dialog2").Show
If DialogSheets("Dialog2").OptionButtons("OptKO").Value = xlOn Then GoTo A
If DialogSheets("Dialog2").OptionButtons("OptOK").Value = xlOn Then ok
If DialogSheets("Dialog2").OptionButtons("OptPO").Value = xlOn Then po
If DialogSheets("Dialog2").OptionButtons("OptPR").Value = xlOn Then pr
Po wybranie tej opcji zostaje wykonany skok do miejsca A: w kodzie głównym.
Treaz jest OK.
Przepraszam Trebor za zajęcie cennego czasu, czasami też mi się coś uda.
Pozdrawiam |
_________________ jmisiek |
|
 | ID posta:
4337
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona używa plików cookies.
Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe
|