Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-listy-sheet » jak-na-listy-sheet-VBA-Excel
Microsoft Excel logo

Jak na listy využitím VBA Excel

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Podívejme se na práci s listy využitím VBA v Microsoft Excel. I takový výběr listu, kopírování, nebo nějaká jiná operace s listem jako přidání/mazání, zamknutí, vás může pěkně potrápit.

Úvodem do práce s listy využitím VBA

Co vše se dá s listy provádět a jaká vás mohou čekat omezení, nebo komplikace jsem se pokusil sepsat v několika samostatných článcích. Z důvodů přehledu a rychlé použití, jsem si sepsal tento článek /potřeboval jsem rychlý přehled kódu týkajících se listu/. pokud máte v pojmech jasno třeba se bude hodit i vám. Pro přehlednost je článek rozdělen na jednotlivé kapitoly, ať se můžete rychle dostat k požadovanému cíli.

Odkazy na související články jsou přímo u jednotlivých kapitol.


Pojmy Sheet, Worksheet, Charts

Pokud víte jaký je rozdíl mezi jednotlivými pojmy, můžete přeskočit, pokud si nejste jistí doporučuji článek.

Jinak pro připomenutí pár kódu

MsgBox (ActiveSheet.Name) Debug.Print Worksheets(1).Name ' listy s buňkami Debug.Print Charts(1).Name ' listy s grafem Debug.Print Sheets(1).Name ' vše grafy i listy s buńkami

Rozdíl Select - Activate

Pokud znáte rozdíl a víte že Select není až tak potřeba, můžete článek přeskočit, pokud si nejste jistí doporučuji samostatný článek ve kterém se problematice věnuji.

Jinak pro připomenutí pár kódu.

Sheets("3").Select Sheets("3").Activate MsgBox (ActiveSheet.Range("A1").Value) Sheets(Array("1", "2", "3")).Select Sheets("3").Activate

Jak na Select

Předpokládám, že již máte jasno mezi Select a Acctivate, tak se podívám jen na Select. Jak se vyvarovat problémům )skrytý list). Jak označovat dle názvu nebo pořadí, ale co název listu jako číslo. Proč je vhodné proměnné definovat a proč rád používám kódové jméno listu (code name). Více v samostatném článku

Jinak pro připomenutí pár kódu.

' List1.[A1].Select MujKodovyNazevListu.[A1].Select Dim wb As Workbook Dim ws As Worksheet Set wb = ActiveWorkbook Set ws = Sheet("List1") wb.ws.Select ' zobrazovat list/y List6.Visible = True ' zobrazit List6.Visible = xlSheetVeryHidden

Více o zobrazování s skrývání v samostatném článku

Poznámka vím že Select mnohdy není potřeba, ale krásně se mi na něm ukazuje, které buňky jsou vybrané atd. Pokud máte jiný trik, jak při vzdělávání ukázat do kterých buněk bude Excel zapisovat, když například program krokuji, budu rád za tip v komentářích.

Události listu

Na základě určité činnosti, přepočet, změna v buňce může VBA Excel něco provést. Více v samostatném článku

Pro rychlou orientaci

Pořadí událost

  • 1. Calculate Worksheet_Calculate
  • 2. Change Worksheet_Change
  • 3. SelectionChange Worksheet_SelectionChange

Seznam události

  • Activate
  • BeforeDoubleClick
  • BeforeRightClick
  • Calculate -
  • Deactivate
  • FollowHyperlink
  • Change -
  • PivotTableAfterValueChange
  • PivotTableBeforeAllocateChanges
  • PivotTableBeforeCommitChanges
  • PivotTableBeforeDiscardChanges
  • PivotTableChangeSync
  • PivotTableUpdate
  • SelectionChange
Private Sub Worksheet_Calculate() MsgBox ("Změna Worksheet_Calculate") End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) MsgBox ("Změna Worksheet_SelectionChange") End Sub Private Sub Worksheet_Change(ByVal Target As Excel.Range) MsgBox ("Změna Worksheet_Change") End Sub ... Pozor změny v bunce vyvola zmenu > osetrit ... Application.EnableEvents = False ... Potřebná změna v buňce nevyvola zmenu... Application.EnableEvents = True

Práce s listy

Původně mělo být v jenom článku, ale možností co lze s listy provádět je hodně a s tím souvisí i možné problémy, proto jsme se rozhodl postupně rozdělit. Zde jen rychlý úvod a ukázky, když člověk víc co a proč. Více v samostatném článku/ích/, které jsou zmíněný u jednotlivých kapitol.

Přidávat, přejmenovávat, smazat list/y

Jak na přidávání listů, mazání a pojmenovávání. opět se můžete odkazovat přes pořadí, název, nebo můj oblíbený kódový název.

Rychlá ukázka kódu pro připomenutí

' --------------------------- ' - pridavat/mazat listy + prejmenovat + přesouvat ' --------------------------- Sheets.Add ' přidat list Sheets.Add.Name = "Můj název" 'přiřadit mu název ' přidat za/před list, na konec Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Můj název" ' funguje i Before - místo počtiu dodat jméno ' smazat SelectedSheets.Delete List9.Delete Sheets("List9").Delete Application.DisplayAlerts = False ' True

Kopírování, kopírování/přesun jinam, přesun

Jak přesouvat nebo kopírovat celý list. Více v samostatném článku.

Pár kódu

' ------------------------------------ ' - kopirovat, presun/kopie jinam, - ' ------------------------------------ Sheets("List1").Copy Before:=Sheets(3) Sheets("List3").Select Application.CutCopyMode = False Sheets("List3").Move Before:=Sheets(2) Sheets("List1").Select Sheets("List1").Move After:=Sheets(2)

Vypnutí překreslování a zobrazování chybových hlášek

Pozor u vypínaní chybových a dialogových oken, nemusíte se dozvědět o chybových hláškách a hledáte chybu jinde.

' --------------------------- ' - překreslování, varovná hlášení ' --------------------------- Application.DisplayAlerts = False Application.DisplayAlerts = True Application.ScreenUpdating = False ' True

Barva osuška listů

barva ouška

' --------------------------- ' - barva ouška/karty With ActiveWorkbook.Sheets("List1").Tab .ThemeColor = xlThemeColorAccent1 .TintAndShade = 0.399975585192419 End With

Tisk, uložit jako *.pdf

Potřebuji li list uložit jako pdf-ko. Jak na ukládání je popsáno podrobněji v samostatném článku tisk/uložení do *.pdf využitím VBA.

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=""D:\testy\test.pdf"", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=True

Stavy listu

Jak na různé stavy listu, je zamčen, existuje....

' - zamknuto nezamknuto ActiveSheet.ProtectContents ' - ne/exituje list On Error Resume Next If Sheets("NeexistujiciList") Is Nothing Then MsgBox ("neexistuje") else MsgBox ("existuje") End If On Error GoTo 0 ' - pocty, poradi, nazvy i kodove PocetListu = Sheets.Count JmenoListu = Sheets(1).Name ' poradi listu PoradiListu = Worksheets("VBA").Index n = ActiveSheet.Index JmenoListu = Sheets(1).Name ' kodove jmeno listu Debug.Print Worksheets("3").CodeName

Bezpečnost - zámek

Jak na bezpečnost, zamykání/odemykání, případně jak list skrývat. Případně jak nastavit listu at je superskrytý. Opět pokud používáte a znáte můžete přeskočit. Případně odkaz na podrobnější popis.

Souhrn kódu

' --------------------------- ' - zobrazovat/skrývat list/y ' --------------------------- List6.Visible = True ' zobrazit List6.Visible = False ' zobrazit List6.Visible = xlSheetVeryHidden List6.Visible = xlSheetHidden List6.Visible = xlSheetVisible ' Nemusíte se odkazovat jen přes kodové jméno listu

Pro zamýkání a odemykání

' --------------------------- ' - zamykat/odemykat listy ' --------------------------- Worksheets("List1").Protect Password:="Heslo" Worksheets("List1").Unprotect Password:="Heslo" ActiveWorkbook.Protect Structure:=True, Windows:=False Range("F17:F18").Locked = False ' True Range("F17:F18").FormulaHidden = False ' True

List a příprava pro tisk

Jak nastavit list na tisk a pak jeho vytisknutí. nejen nastavení okrajů, barev, konců stránek, záhlaví a zápatí. opět jen to důležité co potřebuji více v samostatných článcích.

Pár potřebných VBA kódu pro tisk

' --------------------------- ' - nastavení pro tisk ' --------------------------- ActiveSheet.PrintOut Preview:=True Worksheets("List2").PrintPreview Sheets("List3").Visible = True ActiveSheet.PrintOut nastavení tiskárny Application.Dialogs(xlDialogPrinterSetup).Show AktualniTiskarna = Application.ActivePrinter MsgBox (AktualniTiskarna)

Pár potřebných VBA kódu pro záhlaví a zápatí

' vlozit do zahlavi - texty z buněk. With ActiveSheet.PageSetup .LeftHeader = Range("A1") .CenterHeader = Range("A2") .RightHeader = Range("A3") End With ' Pro zapati: With ActiveSheet.PageSetup .LeftFooter = "&P" ' aktualni stranka ' &N pocet stranek ... D datum, T cas .CenterFooter = "Text zadaný přímo" .RightFooter = "" End With

Závěrem

Tento článek slouží primárně jako pomůcka pro mě samotného. Některé kódy nemusí bez další znalosti a zbytku kódu dávat smysl, proto kapitoly odkazuji na články kde se snažím jít do větší hloubky a popsat případné problémy )text a číslo u odkazování na list, skryté, kódové označení, atd.)

Pokud ale máte tip, co zde není a bylo by záhodno doplnit budu rád. Pokusím se vylepšit a doplnit.

Článek byl aktualizován: 11.02.2019 13:48

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2019 | 2964

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.