Ahojte, nevim si rady, jak spustit nahrane makro pri opousteni Listu . Eventuelne take pri uzavreni celeho souboru.
Jde mi o to, aby se mi tabulka v Listu automaticky seradila podle abecedy jakmile opustim tento List. Zatim to resim tlacitkem, ale to neni tak elegantni.
Moc DEKUJU Stana
Makro v Excelu - opusteni Listu Vyřešeno
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Makro v Excelu - opusteni Listu
Pouzij udalostni proceduru Workbook_SheetDeactivate:
V editoru VBA vloz do objektu Tento sesit:
Deklarace Option Compare Text zajisti, ze nejsou rozlisovana mala a velka pismena
NazevListu je nazev listu, na kterem ma probehnout po jeho deaktivaci setrideni, MojeProceduraSort je procedura, kterou nyni volas tlacitkem.
V editoru VBA vloz do objektu Tento sesit:
Kód: Vybrat vše
Option Compare Text
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "NazevListu" Then MojeProceduraSort
End Sub
Deklarace Option Compare Text zajisti, ze nejsou rozlisovana mala a velka pismena
NazevListu je nazev listu, na kterem ma probehnout po jeho deaktivaci setrideni, MojeProceduraSort je procedura, kterou nyni volas tlacitkem.
Re: Makro v Excelu - opusteni Listu
Jeto uzasny jak rychle jsem dostala odpoved. Moc dekuju. Tyhle stranky jsou skvele.
ALE - Zkousela jsem to, ale nefunguje mi to a pri ukladani mi to hodilo tuhle chybu:
Compile Error: Ambiguous name detected: Workbook_SheetDeactivate
Takhle ted vypada to makro:
Pricemz Sort se jmenuje moje nahrane makro a Input Data list.
Sort mi predtim pres tlacitko fungoval.
Asi delam neco blbe....
ALE - Zkousela jsem to, ale nefunguje mi to a pri ukladani mi to hodilo tuhle chybu:
Compile Error: Ambiguous name detected: Workbook_SheetDeactivate
Takhle ted vypada to makro:
Kód: Vybrat vše
Public Function Workbook_SheetDeactivate()
Option Compare Text
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Input Data" Then Sort
End Sub
End Sub
Pricemz Sort se jmenuje moje nahrane makro a Input Data list.
Sort mi predtim pres tlacitko fungoval.
Asi delam neco blbe....
- mike007
- Master Level 7.5
- Příspěvky: 5860
- Registrován: srpen 07
- Bydliště: Pardubice
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Makro v Excelu - opusteni Listu
Takto to musí vypadat:
Kód: Vybrat vše
Option Compare Text
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Input Data" Then Sort
End Sub
Nejlepší hra je Excel!
• Pravidla fóra PC-help • Jak označit téma za vyřešené
»»»»»»»»»»»»»»»»»»»»»»»
UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy pište do fóra. Od toho tu je.
• Pravidla fóra PC-help • Jak označit téma za vyřešené
»»»»»»»»»»»»»»»»»»»»»»»
UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy pište do fóra. Od toho tu je.
Re: Makro v Excelu - opusteni Listu
Uz se stydim sem psat, ale fakt mi to nejde
Uznavam...nejspis jde o problem mezi klavesnici a zidli. Makro "sort" mi samo o sobe funguje (Run Makro). Ale pri presunu na jinych list se nedeje vubec nic.
Uznavam...nejspis jde o problem mezi klavesnici a zidli. Makro "sort" mi samo o sobe funguje (Run Makro). Ale pri presunu na jinych list se nedeje vubec nic.
- mike007
- Master Level 7.5
- Příspěvky: 5860
- Registrován: srpen 07
- Bydliště: Pardubice
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Makro v Excelu - opusteni Listu
Přesně to vystihuješ - problém je mezi židlí a klávesnicí
Makro Sort musíš nechat tam kde je, tj. v nějakém Modulu. Makro, které ti napsal navstevnik musí být umístěné v ThisWorkBook a musí vypadat následovně:
Option Compare Text
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Input Data" Then Sort
End Sub
V tvém předchozím příspěvku jsou nějaké řádky (červeně označené), které tam nemají co dělat.
Public Function Workbook_SheetDeactivate() - nechápu, odkud jsi to sebrala...
Option Compare Text
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Input Data" Then Sort
End Sub
End Sub - duplicita. Netřeba ukončovat makro dvakrát
V příloze je soubor test.xls do kterého jsem implementoval zmíněné makro. Zkus si kliknout do jiného listu a uvidíš, že to funguje. Poté se podívej do VBA ( Alt+F11) jak to tam musí být, aby to fungovalo korektně.
Makro Sort musíš nechat tam kde je, tj. v nějakém Modulu. Makro, které ti napsal navstevnik musí být umístěné v ThisWorkBook a musí vypadat následovně:
Option Compare Text
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Input Data" Then Sort
End Sub
V tvém předchozím příspěvku jsou nějaké řádky (červeně označené), které tam nemají co dělat.
Public Function Workbook_SheetDeactivate() - nechápu, odkud jsi to sebrala...
Option Compare Text
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "Input Data" Then Sort
End Sub
End Sub - duplicita. Netřeba ukončovat makro dvakrát
V příloze je soubor test.xls do kterého jsem implementoval zmíněné makro. Zkus si kliknout do jiného listu a uvidíš, že to funguje. Poté se podívej do VBA ( Alt+F11) jak to tam musí být, aby to fungovalo korektně.
- Přílohy
-
- test.xls
- (22.5 KiB) Staženo 39 x
Nejlepší hra je Excel!
• Pravidla fóra PC-help • Jak označit téma za vyřešené
»»»»»»»»»»»»»»»»»»»»»»»
UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy pište do fóra. Od toho tu je.
• Pravidla fóra PC-help • Jak označit téma za vyřešené
»»»»»»»»»»»»»»»»»»»»»»»
UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy pište do fóra. Od toho tu je.
Re: Makro v Excelu - opusteni Listu
Ja vim, to si taky casto myslim o "svych" uzivatelich :-)
Dovedu si predstavit, co si ted oba o me myslite :-) Ale stejne MOC dekuju ze mi vubec nekdo radi.
Takze, prseunula jsem makro /opravene/ do This Workbook. Mela jsem ho v Excel Projectech - Sheet 3(Input Data) a VITE CO SE STALO?....zesortovalo mi to jinou tabulku (v jinem sheetu) nez jsem chtela....tu mam ted uplne nasrot :-( uz se bojim experimentovat.
Ted jsem si teprve vsimla toho testu....jdu se na to mrknout. Diky. Jeste dam vedet.
Dovedu si predstavit, co si ted oba o me myslite :-) Ale stejne MOC dekuju ze mi vubec nekdo radi.
Takze, prseunula jsem makro /opravene/ do This Workbook. Mela jsem ho v Excel Projectech - Sheet 3(Input Data) a VITE CO SE STALO?....zesortovalo mi to jinou tabulku (v jinem sheetu) nez jsem chtela....tu mam ted uplne nasrot :-( uz se bojim experimentovat.
Ted jsem si teprve vsimla toho testu....jdu se na to mrknout. Diky. Jeste dam vedet.
Re: Makro v Excelu - opusteni Listu
Tak jsem zpet. Mamto uplne stejne jako ty. Pro jistotu sem jeste pastnu jak vypada moje nahrane Sort makro, ale to kdyztak delal Excel to ne ja....
Prijde mi ze to nezesortovalo tabulku v Listu, ktery jsem opustila, ale v Listu, ny ktery jsem se presunula.
Chjo
Kód: Vybrat vše
Sub Sort()
'
' Sort Macro
' Macro recorded 13.2.2009 by SB
'
'
Range("A1:B31").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Select
End Sub
Prijde mi ze to nezesortovalo tabulku v Listu, ktery jsem opustila, ale v Listu, ny ktery jsem se presunula.
Chjo
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Makro v Excelu - opusteni Listu
Uvedenim subrutiny Sort je jasna pricina:
Problem je v pouzite subrutine Sort. Jedna se o nahrane makro, ktere tridi na aktivnim listu. V tomto pripade je po opusteni listu "Input Data" aktivnim listem list vybrany.
Naprava je jednoducha, subrutinu Sort zavolat pri aktivaci listu "Input Data":
Pokud je nutno tridit po opusteni listu, pak je potreba pouzit jinou subrutinu.
PS:
Take je mozno pouzit udalostni proceduru listu Worksheet_Activate misto vyse uvedene; do modulu prislusneho listu vlozit:
PPS.: Pred kazdym pouzitim neoverenych procedur, funkci je nutno si vzdy vytvaret zalohu!
Problem je v pouzite subrutine Sort. Jedna se o nahrane makro, ktere tridi na aktivnim listu. V tomto pripade je po opusteni listu "Input Data" aktivnim listem list vybrany.
Naprava je jednoducha, subrutinu Sort zavolat pri aktivaci listu "Input Data":
Kód: Vybrat vše
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Input Data" Then Sort
End Sub
Pokud je nutno tridit po opusteni listu, pak je potreba pouzit jinou subrutinu.
PS:
Take je mozno pouzit udalostni proceduru listu Worksheet_Activate misto vyse uvedene; do modulu prislusneho listu vlozit:
Kód: Vybrat vše
Private Sub Worksheet_Activate()
Sort
End Sub
PPS.: Pred kazdym pouzitim neoverenych procedur, funkci je nutno si vzdy vytvaret zalohu!
Re: Makro v Excelu - opusteni Listu
Panove, jsem velmi vdecna, za vase rady a urcite si tohle makro nekde ulozim, ale bohuzel to stale neni to prave. Potrebuji aby se tabulka sortovala po opusteni listu, ve kterem je tabulka. Tento seznam UZ musi byt serazeny podle abecedy, kdyz zacnou uzivatele pracovat na dalsi tabulce v jinem listu.
Takze vas moc prosim o radu ohledne "jine subrutiny" jak jste psali.
A jeste jednou moc dekuju, pomuzete mi tak dovest moji tabulku k dokonalosti.
Diky Stana
Takze vas moc prosim o radu ohledne "jine subrutiny" jak jste psali.
A jeste jednou moc dekuju, pomuzete mi tak dovest moji tabulku k dokonalosti.
Diky Stana
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Makro v Excelu - opusteni Listu
to Stana
Lze tomu roumet tak, ze aniz je sesit ulozen a uzavren? (V dobach budovani socializmu si soudruzi udernici predavali stroje za chodu )
Pokud tomu tak neni, pak lze treba seznam setridit pri otevreni sesitu.
Bylo by vhodne uvest verzi Excelu (2000, 2003, 2007) a jeste lepsi by bylo pripojit testovaci soubor s fiktivnimi daty, ale zachovavajici skutecnou strukturu a rozsah, zda je sesit sdileny nebo dalsi uzivatele si tento sesit oteviraji jednotlive, ...
PS.:
Snad vyhovi nasledujici reseni, v editiru VBA vloz do modulu Tento_sesit (ThisWorkbook) misto drive uvedenych procedur nasledujici udalostni procedury (jmeno listu "List1" v obou procedurach dle potreby nahrad, pozor na mala a velka pismena), je volana puvodni procedura Sort:
Tento seznam UZ musi byt serazeny podle abecedy, kdyz zacnou uzivatele pracovat na dalsi tabulce v jinem listu.
Lze tomu roumet tak, ze aniz je sesit ulozen a uzavren? (V dobach budovani socializmu si soudruzi udernici predavali stroje za chodu )
Pokud tomu tak neni, pak lze treba seznam setridit pri otevreni sesitu.
Bylo by vhodne uvest verzi Excelu (2000, 2003, 2007) a jeste lepsi by bylo pripojit testovaci soubor s fiktivnimi daty, ale zachovavajici skutecnou strukturu a rozsah, zda je sesit sdileny nebo dalsi uzivatele si tento sesit oteviraji jednotlive, ...
PS.:
Snad vyhovi nasledujici reseni, v editiru VBA vloz do modulu Tento_sesit (ThisWorkbook) misto drive uvedenych procedur nasledujici udalostni procedury (jmeno listu "List1" v obou procedurach dle potreby nahrad, pozor na mala a velka pismena), je volana puvodni procedura Sort:
Kód: Vybrat vše
Option Explicit
Dim ShName As String
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ShName = "List1" Then
ShName = Sh.Name
Application.EnableEvents = False
Worksheets("List1").Activate
Sort
Worksheets(ShName).Activate
Application.EnableEvents = True
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name = "List1" Then ShName = Sh.Name
End Sub
Private Sub AppEE()
' Tuto subrutinu pouzit v pripade, ze pri testovani doslo
' k chybe a procedura Workbook_SheetActivate
' byla predcasne ukoncena. Nedochazelo by k automatickemu
' prepoctu, nemusi pomoci ani opetovne spusteni Excelu.
'
Application.EnableEvents = True
End Sub
Re: Makro v Excelu - opusteni Listu
Ten dokument jsem mela prilozit hned, abyste nedelali zbytecnou praci. NechaLa jsem tam jen relevantni listy.
V tabulce input data budou postupne pribyvat jmena a oddeleni, v tabulce TAB se pak ve sloupci B budou nabizet jmena z tabulky Input Data. ALE aby to fungovalo dobre, MUSI byt seznam v abecednim poradi. To je proc potrebuji ten Sort. Takze uzivatel doplni jmeno do tabulky Input data a po te co Input Data opusti se musi seradit (ted je tam pouzito tlacitko). Takze dle meho spoustet razeni pri Deactivaci Sheetu je to nejlepsi reseni, akorat jak zajistit aby se sortovala ta spravna tabulka. (o par prispevku vyse jsem psala ze mi to funguje, ale bohuzel to sortovalo jinou tabulku, tu na kterou jsem po opusteni Input Data presla.)
Potrebuju na to prijit pricipielne, protoze budu delat jeste jednu tabulku, ktera ale po opusteni Listu bude delat mnohem slozitejsi proceduru. (sefova chce, aby po te co lidi zapisou do radky se radka zamkla, tak nejak jsem na to prisla, ale opet pujde o nahrane makro, takze kdovi jestli to bude fungovat)
Tu posledni radu jsem jeste nezkousela. Podle zbezneho pohledu mi to zatim pripada, ze to nebude ono. Ale vyzkousim.
Jeste jednou dekuju. (hele, kolikrat uz jste nad mymi prispevky kroutili hlavou.. )
PS: Jeste jsem si znovu precetla dotaz. Predpokladam, ze listu Input Data se nebude doplnovat tak casto, parkrat za rok, takze se nejspis nesejdou dva uzivatele zapisujici naraz.
V tabulce input data budou postupne pribyvat jmena a oddeleni, v tabulce TAB se pak ve sloupci B budou nabizet jmena z tabulky Input Data. ALE aby to fungovalo dobre, MUSI byt seznam v abecednim poradi. To je proc potrebuji ten Sort. Takze uzivatel doplni jmeno do tabulky Input data a po te co Input Data opusti se musi seradit (ted je tam pouzito tlacitko). Takze dle meho spoustet razeni pri Deactivaci Sheetu je to nejlepsi reseni, akorat jak zajistit aby se sortovala ta spravna tabulka. (o par prispevku vyse jsem psala ze mi to funguje, ale bohuzel to sortovalo jinou tabulku, tu na kterou jsem po opusteni Input Data presla.)
Potrebuju na to prijit pricipielne, protoze budu delat jeste jednu tabulku, ktera ale po opusteni Listu bude delat mnohem slozitejsi proceduru. (sefova chce, aby po te co lidi zapisou do radky se radka zamkla, tak nejak jsem na to prisla, ale opet pujde o nahrane makro, takze kdovi jestli to bude fungovat)
Tu posledni radu jsem jeste nezkousela. Podle zbezneho pohledu mi to zatim pripada, ze to nebude ono. Ale vyzkousim.
Jeste jednou dekuju. (hele, kolikrat uz jste nad mymi prispevky kroutili hlavou.. )
PS: Jeste jsem si znovu precetla dotaz. Predpokladam, ze listu Input Data se nebude doplnovat tak casto, parkrat za rok, takze se nejspis nesejdou dva uzivatele zapisujici naraz.
- Přílohy
-
- PodleJmen_puvodni.xls
- (63.5 KiB) Staženo 23 x
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
Excel - automatický export listů xls do pdf včetně pojmenování Příloha(y)
od kalosek » 28 čer 2023 20:31 » v Kancelářské balíky - 2
- 2128
-
od kalosek
Zobrazit poslední příspěvek
29 čer 2023 19:39
-
-
- 18
- 3667
-
od luko02420
Zobrazit poslední příspěvek
16 kvě 2023 11:27
-
- 9
- 1186
-
od mmmartin
Zobrazit poslední příspěvek
29 srp 2023 16:47
-
- 0
- 900
-
od Jsimi
Zobrazit poslední příspěvek
06 úno 2024 22:43
-
- 2
- 1348
-
od X
Zobrazit poslední příspěvek
02 čer 2023 18:06
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 44 hostů