Makro v Excelu - opusteni Listu Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Stana
nováček
Příspěvky: 14
Registrován: únor 09
Pohlaví: Žena
Stav:
Offline

Makro v Excelu - opusteni Listu  Vyřešeno

Příspěvekod Stana » 12 úno 2009 21:56

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

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod navstevnik » 12 úno 2009 22:48

Pouzij udalostni proceduru Workbook_SheetDeactivate:
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.

Stana
nováček
Příspěvky: 14
Registrován: únor 09
Pohlaví: Žena
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod Stana » 13 úno 2009 19:35

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:

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....

Uživatelský avatar
mike007
Master Level 7.5
Master Level 7.5
Příspěvky: 5860
Registrován: srpen 07
Bydliště: Pardubice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Makro v Excelu - opusteni Listu

Příspěvekod mike007 » 13 úno 2009 19:57

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-helpJak 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.

Stana
nováček
Příspěvky: 14
Registrován: únor 09
Pohlaví: Žena
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod Stana » 13 úno 2009 20:26

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. :-(

Uživatelský avatar
mike007
Master Level 7.5
Master Level 7.5
Příspěvky: 5860
Registrován: srpen 07
Bydliště: Pardubice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Makro v Excelu - opusteni Listu

Příspěvekod mike007 » 13 úno 2009 20:34

Přesně to vystihuješ - problém je mezi židlí a klávesnicí :wink:

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-helpJak 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.

Stana
nováček
Příspěvky: 14
Registrován: únor 09
Pohlaví: Žena
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod Stana » 13 úno 2009 20:43

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.

Stana
nováček
Příspěvky: 14
Registrován: únor 09
Pohlaví: Žena
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod Stana » 13 úno 2009 20:50

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....

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

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod navstevnik » 13 úno 2009 22:10

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":

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!

Stana
nováček
Příspěvky: 14
Registrován: únor 09
Pohlaví: Žena
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod Stana » 16 úno 2009 21:20

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

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod navstevnik » 16 úno 2009 22:17

to Stana
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

Stana
nováček
Příspěvky: 14
Registrován: únor 09
Pohlaví: Žena
Stav:
Offline

Re: Makro v Excelu - opusteni Listu

Příspěvekod Stana » 17 úno 2009 09:48

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.. :D :D :D )

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
  • Import PDF do excelu Příloha(y)
    od luko02420 » 13 kvě 2023 11:29 » v Kancelářské balíky
    18
    3667
    od luko02420 Zobrazit poslední příspěvek
    16 kvě 2023 11:27
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1186
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Poškozený soubor excelu Příloha(y)
    od Jsimi » 06 úno 2024 22:43 » v Kancelářské balíky
    0
    900
    od Jsimi Zobrazit poslední příspěvek
    06 úno 2024 22:43
  • Promítaní excelu a videa zároveň
    od Marw7_ » 02 čer 2023 15:57 » v Vše ostatní (sw)
    2
    1348
    od X Zobrazit poslední příspěvek
    02 čer 2023 18:06

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 44 hostů