Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 833 Skopiuj do schowka 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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

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