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

Jste zde: Úvodní stránka » excel » vba » ms-excel-vba-uvod

Excel VBA makra - úvod do programování

Videokurzy Excel

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

aneb využijte Visual Basic for Applications (VBA) při programování v MS Excelu

Makro úvod

Nápověda je pouze v angličtině, asi se jim to nechtělo kvůli několika "bláznům" překládat. Alespoň se člověk zdokonaluje v technické angličtině.

Výborně se hodí pro stále se opakující činnosti. Případně chceme-li vytvořit v Excelu něco profesionálního, neobjedeme se bez maker (VBA). Jejich použití je v Excelu velice jednoduché. Stačí mít základy programování ve Visual Basicu (VB), nebo v jiném programovacím jazyku, a již můžete programovat.

Jednoduché makro

excel: výběr makra

Pro stále se opakující činnosti můžeme nahrát makro (pokud jej nechceme programovat).

Z nástrojové lišty Nástroje - Makro - Záznam nového makra... .


excel: volba názvu

Zadáme název makra:


a již můžeme psát či provádět často opakované pohyby. Až bude vše hotovo tak stačí makro stopnout tlačítkem. excel: ukončení a máme makro hotovo.

excel: výběr makra

Pokud jej chceme spustit stačí přes menu Nástroje - Makro - Makra... vybereme naše makro podle názvu.


Toto by bylo v krátkosti o makrech a jejich záznamech, osobně moc nepoužívám, více možnosti nabízí vlastní programování maker, na která se podíváme dále:

Složitější makro

aneb využijeme Visual Basic for Applications :)

excel: výběr makra

Spustíme nejprve Visual Basic. V menu Nástroje vybereme makro a poté Editor jazyka Visual Basic


excel: okno visual Basic

Otevře se nám vlastní okno ve Visual Basicu. Doporučuji si ještě zobrazit okna Project Explorer a Properties Window excel: okno visual Basic a obdržíme již použitelnou obrazovku:


excel: okno visual Basic

Tak a máme přehledně uspořádanou plochu se všemi potřebnými drobnostmi. No a můžeme se vrhnout do našeho prvního programu.


První program

Z menu vybereme Insert - Module a můžeme napsat náš První program. Pro jednoduchost si vybereme například součet (jde jen o ukázku a kontrolu a to je nejlépe provádět na něčem jednoduchém.


Function secti(x, y)
secti = x + y
End Function

excel: ukazky výsledku funkce secti
excel: kontrola

Pro kontrolu námi vytvořených programů existuje mnoho prostředků, např.: Object Browser, který nám umožní i vložit popisek námi vytvořené funkce. Ať víme, co jsme si to naprogramovali.


excel: kontrola

Ke každé funkci si můžeme uložit komentář. V Object Browser pravým tlačítkem na funkci vybereme Properties...


excel: kontrola

Zde zadáme náš popis. Po stisknutí OK se naše poznámka uloží.


excel: vložení funkce

A teď již můžeme v Excelu naší první funkci použít. Vybereme Vlož - Funkce, vybereme vlastní funkce.


excel: vložení funkce

Zde již je stačí kliknout na název námi vytvořené funkce a hotovo :)


excel: ukazky výsledku funkce secti

A tohle je výsledek.

Tak a tímto bychom měli svou první naprogramovanou funkci. Je pravda, že zadáním =10+20 máme součtovou funkci hned a bez programování, ale cílem bylo ukázat jak naprogramovat funkci na jednoduchém příkladu. Složitější příklady budou následovat.


VBA - makra v přípravě

Např. použití cyklů, heslování, vlastní menu a mnoho dalšího zajímavého.

Upozornění

Testováno v programu Excel 2003. V starších aplikacích nemusí některé funkce fungovat.

Článek byl aktualizován: 19.09.2020 11:06

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


Michael

Přidáno: 15.08.11 12:41

Zdravím. Potřeboval bych poradit ohledně makra. Řekněme, že v buňce A1 mám [Ahoj] v buňce B1 mám [=A1], a tudíž taky Ahoj. Jak zařídím, aby mi makro místo vzorce =A1 kopíroval výsledek vzorce? děkuji

Pavel Lasák

Přidáno: 25.08.11 17:32

To Michael: použití Paste:=xlPasteValues

Toman

Přidáno: 06.09.11 10:41

Dobrý den, jsem pouhým uživatelem excelu, ale potřeboval bych pomoc s načítáním řádků databáze z tebulky 2 do tabulky 1 podle např. klíčového čísla v odstavci. Je zde někdo kdo by pomohl v této věci, děkuji. Toman PS: Email: toman@tradeservicing.cz

Fanky

Přidáno: 19.09.11 09:35

Dobry den, potrebujem pomoct s makrom na vytvorenie statickej hlavicky v subore, a oznacenim sumarnych riadkov. Zrejme pojde o niekolko prikazov, neovladam to a pre kratkost casu ani nestihnem nastudovat. Ak by niekto vedel pomoct, budem sa revanzovat. Podrobne info na adrese infoserver7@gmail.com Skype kontakt: petervali Dakujem

Tomás

Přidáno: 15.01.12 12:19

Dobrý den, potrebuju poradit. Jak udelat v tabulce excel. Aby mě upozrnovala na bližíci se datumy.Email: vajra@seznam.cz

Pavel Lasák

Přidáno: 15.01.12 17:45

To Tomás: Například pomocí funkce KDYŽ nebo podmíněného formátování.

Aleš

Přidáno: 21.02.12 15:32

Dobrý den, potřeboval bych poradit, jak napsat či nahrát makro, v následující situaci. Mám na listu více než 150 skladových položek (každá v jednom řádku). V jedné buňce je stav kusů v hlavním skladu a v sousední buče na řádku je stav téže položky v manipulačním skladu. Potřeboval bych, aby pro zvolenou položku po stisku tlačítka (to umím zadat) makro odečetlo 1 kus z hlavního skladu a přičetlo 1 kus do manipulačního skladu. Děkuji za pomoc Aleš

Pavel Lasák

Přidáno: 21.02.12 18:18

To Aleš: Nejprve načíst hodnotu http://office.lasakovi.com/excel/vba-listy-bunky/precti-udaj-do-bunky-excel-vba/ změnit -/+ 1 a pak zapsat http://office.lasakovi.com/excel/vba-listy-bunky/zapis-udaj-do-bunky-excel-vba/

Josef Barták

Přidáno: 25.02.12 10:11

Mám na List1 jmenný seznam lidí s daty v řádcích a ke každé osobě potřebuji přiřadit typ práce pomocí tříznakové zkratky např: noční práce NOC nebo třísměnný provoz 3SP. Stejnými zkratkami jsou označeny názvy listů s předdefinovaným textem k dané práci. Jak nadefinovat tlačítko tisk, aby po zadání zkratek 3SP, NOC nebo dalších do jedné buňky se označily do náhledu tisku příslušné listy. Děkuji za odpověď. Josef

Pavel Lasák

Přidáno: 25.02.12 16:26

To Josef Barták: Nepostačí vám využít filtr? http://office.lasakovi.com/excel/data/ms-excel-filtry-uvod/

Josef Barták

Přidáno: 25.02.12 17:29

Nestačí, protože je třeba vytisknout ke každě osobě protokol práce a to na samostatný list. Při stisku tlačítka tisk umístěného na řádku osoby by mělo dojít ke zobrazení náhledu před tiskem z vyselektovaných listů, vybraných dle třípísmenné kombinace, zadané do buňky na řádku osoby (např: 3SP, MAD, NOC atd. Názvy listů opět 3SP, MAD, NOC atd.) Jestli je to ale ve VBA možné?

Pavel Lasák

Přidáno: 26.02.12 11:57

To Josef Barták: Je to možné. Vybrané třípísmené kombinace vyčtu z buňky http://office.lasakovi.com/excel/vba-listy-bunky/precti-udaj-do-bunky-excel-vba/ pomoci textových funkci vyzobu MAD, NOC a pak vyberu list Sheets(Array("List1", "List2")).Select Sheets(Array("3SP", "MAD", "NOC")).Select A provedu obrazení před tiskem.

MAD, NOC, lze vzít i ze zobrazeného formuláře, kde uživatel zaškrtne co potřebuje tisknout.

Aleš

Přidáno: 26.02.12 14:52

Dobrý den, potřebuji konkrétní vzorec ve VBA, který by snížil hodnotu ve vybrané buňce např. A2 o hodnotu 1 (jedna) a zároveň zvýšil hodnotu v buňce sousední A3 taktéž o hodnotu 1(jedna). Děkuji

Pavel Lasák

Přidáno: 26.02.12 15:21

TO Aleš: přečíst údaj z buňky http://office.lasakovi.com/excel/vba-listy-bunky/precti-udaj-do-bunky-excel-vba/ přičíst 1 a zapsat http://office.lasakovi.com/excel/vba-listy-bunky/zapis-udaj-do-bunky-excel-vba/

Petr

Přidáno: 03.05.12 12:41

Ahoj, možná blbý dotaz. Mám určitou představu o funkčnosti tabulky v excelu, tak mě to přivedlo až k VBA,makrům a pod. Princip by měl být asi takový: Budu mít aspoň jednu buňku, seznam předdefinovaných údajů ( dejme tomu 3 města) jeden list sešitu bude obsahovat "databazi" (město, ulice, firma atd...). Ve zmiňovaném seznamu si zvolím město, kliknu na čudlík, spustím třeba makro a chci aby mě to do určitého pole (víc řádků) vypsalo všechny řádky z "databaze" které obsahují ono zvolené město. Je to sci-fi, nebo by se to dalo realizovat? Dekuji

Pavel Lasák

Přidáno: 03.05.12 18:41

To Petr: Dá se realizovat. Zkusím připravit článek jak hledat a kopírovat údaje.

Ludvik

Přidáno: 17.05.12 13:26

Zdravím, Potřeboval bych pomoci s vytvořením makra na propojení MS Project s MS Excel tak, aby mi propojil danou buňku v MS Project s buňkou v MS Excel či naopak, aby buňka v MS Excelu ukázala hodnotu v buňce v MS Project. díky předem

Tomáš

Přidáno: 08.10.12 05:32

Hezký den, chtěl bych se zeptat, jestli už někdo neřešil odstraňování vyfiltrovaných hodnot. Standardní odstranění po označení oblasti buněk mi problém nedělá, ale po filtru potřebuji najít první hodnotu, kterou hledám a poté označit oblast buněk, které hodnotu obsahují. Tedy odstranění nejen hledané hodnoty, ale také celých řádku, jenž hodnotu obsahují. Díky za radu

Pavel Lasák

Přidáno: 08.10.12 16:38

To Tomáš: Odstranování řádku jsem řešil http://office.lasakovi.com/excel/vba-listy-bunky/radky-sloupce-excel-vba-kody/

Honza

Přidáno: 18.10.12 10:33

Dobrý den, mám udělaný pomocí makra program v excelu na výpočet. Ten mi funguje. Teď ale potřebuji, aby některé spočtené hodnoty vypsal(uložil) do tabulky a přiřadil ji název. Takže bych měl program na počítání a třeba po stisku tlačítka by mi vytvořil tabulku s vypočtenýma hodnotama. A chtěl bych, aby těch tabulek mohl vytvořit kolik budu chtít. Díky za radu

Pavel Lasák

Přidáno: 18.10.12 19:52

To Honza: Jak zapisovat údaje do buněk http://office.lasakovi.com/excel/vba-listy-bunky/zapis-udaj-do-bunky-excel-vba/

Marek

Přidáno: 03.01.13 18:45

Dobrý den, potřeboval bych poradit, jak jedním tlačítkem na listě ošetřit více maker, které by se měly spouštět na základě podmínky (měsíce), např. mám v poli datum 1.1.2013 a při kliknutí na tlačítko se spustí makro1, když budu mít v poli datum 1.2.2013 spustí se makro2. Makra mám vytvořený, jen nevím, jak je přiřadit k tomu tlačítku. Přiřadit umím pouze jedno makro a mít dvanáct tlačítek není moc vyhovující. Hledal jsem na googlu, ale bohužel jsem žádné informace nedohledal. Předem děkuji za Váš čas.

Pavel Lasák

Přidáno: 03.01.13 19:58

To Marek: Tlačítkem spustit makro, které na základě splnění podmíny pomocí if else then nebo pomocí Select Case a pak jen spustit patřičné makro: Call ZvoleneMakro Jen pro doplnění: Přečtení hodnoty z buňky Excel VBA - přečti údaj z buňky. Doporučuji hledat v angličtině, informaci je pak hromada.

Marek

Přidáno: 03.01.13 21:20

Děkuji za rychlé nakopnutí pane Lasáku. Zkusil jsem to a zatím to vypadá funkčně. Ještě jednou díky.

Milan

Přidáno: 05.03.13 14:31

Dobrý den, mám problém s tím že po tom co se v buňce provede výpočet a uloží jako hodnota je někdy ho ještě potřeba převést na číslo, nevíte jak se toto dělá, Díky

Pavel Lasák

Přidáno: 05.03.13 16:07

To Milan: Uložit si do "pomocné" buňky daný zdrojový výpočet. V případě požadavku jej použít. Nebo jej mít ve VBA a pomocí příkazu IF používat.

Holly

Přidáno: 28.05.13 08:58

Dobrý den, potřeboval bych prosím poradit, jde o to ze chci vytvořit tlačítko, které po stisknutí přičte hodnotu +1 do sousední buňky, děkuji za odpověď.

Pavel Lasák

Přidáno: 28.05.13 16:51

To Holly: Doporučuji projíthttp://office.lasakovi.com/excel/zaklady/excel-kurz-vba-on-line-zdarma/ , jelikož odpověď je na několik článků: - vložení tlačítka, načtení údaje z buňky, zapsání údaje do buňky

Ondřej

Přidáno: 16.07.13 16:29

Dobrý den. Poprosím vás o radu. Mám tabulku v excelu kterou ručně filtruji na základě jednoho sloupce, dejme tomu L. Tabulka má tedy filtrovaná data a já bych rád vzal hodnotu ze sloupce AC, čtvrtou s hora, při aplikovaném filtru a vložil jí do proměnné. Tedy hodnotu která je momentálně viditelná v sešitu. Jak takovou věc provést?

Jirka_J

Přidáno: 22.10.13 08:29

Dobrý den, řeším problém: Mám v excelu list, kam pomocí makra každý den kopíruji data. Řeším to tak, že buňky vyberu, smažu obsah (Selection.ClearContents)a nakopíruji nové hodnoty. Problém je, že na jiném listě mám výpočty (SUMIFS) a tímto se mi pokazí vzorce (místo sloupců se tam objeví #ODKAZ). Jak to udělat, abych hodnoty aktualizoval (počet řádek na zdrojovém listě je proměnný), aniž bych pokazil ty vzorce? Děkuji

Dan

Přidáno: 24.10.13 17:55

Dobrý den, nedaří se mi najít řešení jak abecedně pojmenovat listy v excelu. Potřeboval bych na první list (A) umístit tlačítko s makrem, které mi po stisknutí zkopíruje list "A" a přejmenuje jej na list "B", a dále po kliknutí na téže tlačítko na listu "B" se vytvoří list "C" atd. Předem děkuji za radu.

Jirka

Přidáno: 27.03.14 15:02

Dobrý den, potřebuji poradit s rozevíracími seznamy. V jednom listu mám zdrojová data a ve druhém mám rozevírací seznamy. Potřebuji vymyslet makro, které by mě po vybrání jedné hodnoty v jednom rozevíracím seznamu omezilo možné hodnoty v druhém rozevíracím seznamu. Děkuji za radu S pozdravem Jirka

martin

Přidáno: 25.05.14 20:55

Ahoj, mám výpočet, kde se mi počítá několik výsledných hodnot v buňkách A1 až A6. A potřebuji vytvořit makro, které bych zkopírovalo tyto výsledky do tabulky, takové měnší databáze. Ale muselo by to vždy přidat nové hodnoty za ty staré - tozn. první klik na tlačítko hodnoty A1 - A6 by zkopírovalo do buněk B1-G1. po druhém kliku na tlačítko by se kopírovali hodnoty do řádku B2-G2. Děkuji za pomoc. Martin

kincade

Přidáno: 05.10.14 17:08

Dobrý den, potřeboval bych poradit jak udělat toto: načítáme v práci data do řádků v excelu, ale pouze od A3 do pozice A40 pak už se při tisku nevejdeme na list A4, proto máme tabulku, která umožňuje pokračovat ve snímání v druhém sloupci. Ale jelikož nikdo není stroj vždy se nám podaří překročit řádek 41 a tudíž nastává problematické mazání a snímání . Požeboval bych poradit jak zařídit aby z pozice A40 se dostal kurzor na pozici B3, přemýšlel jsem o funkci Když, ale nevím jak zobrazit klávesou "kurzor", nebo pak Makro, ale jelikož s nimi nepracuji běžně nechci to pokoušet. Poradíte mi prosím ? vsnabl@seznam.cz

Jojo

Přidáno: 07.10.14 09:56

To Dan: Sub Test() ActiveSheet.Copy After:=Sheets(Worksheets.Count) ' pridať list Sheets(Worksheets.Count).Name = Chr(64 + Worksheets.Count) ' premenovať End Sub

Jojo

Přidáno: 07.10.14 10:09

To Martin: -- Začne zapisovať od B2ažG2. Pre jednoduchosť uvádzam len princíp. Podmienka: A1 musí byť vždy vyplnené.Sub Test() rwLast = Range("B" & Rows.Count).End(xlUp).Row + 1 Range("B" & rwLast & ":G" & rwLast).Value = Application.Transpose(Range("A1:A6")) End Sub

Jojo

Přidáno: 07.10.14 10:40

To kincade: -- Vysvietiť/označiť oblasť, kde sa môže zapisovať(40riadkov x počet stĺpcov) + Formát /Buňky.../Zámek + zrušiť zakliknutie pre "Uzamčeno" + Nástroje/Zámek/Zamknout list... + zakliknúť iba "Vybrat odemknuté buňky" + klik na OK

Šimon

Přidáno: 26.11.14 18:12

mohl bych se zeptat jak vyvolám dotaz do tabulky pomoc makra..popřípadě přes input box, do kterého zadat hodnotu a ověří mi to jeslti je ta hodnota v tabulce ? treba v ms access nebo OF base

xmajky

Přidáno: 04.12.14 12:01

Zadání je dosti neurčité, ale tady je příklad makra v excelu na zjištění dostupné hodnoty v aplikaci MS ACCESS. Pro funkcionalitu tohoto kódu musíte mít přidané DAO a MS access objektové knihovny spustit Visual basic editor v menu - Tools-References zaškrtnout - Microsoft Access 14.0 Object Library Microsoft DAO 3.6 Object Library - verze jsou závislé na tom, jakou verzi EXCELU používáte Tady je kód: Sub Kontrola_zaznamu() Dim S_string As String Dim db As Access.Application Dim rst_Source As DAO.Recordset Set db = New Access.Application 'db.Visible = True 'Zaleží zda chcete vidět aplikace ACCES db.OpenCurrentDatabase "C:\SOUBORY\Smlouvy.accdb" 'Cesta k MS ACCES databazi S_string = "text" 'Hledana hodnota Set rst_Source = CurrentDb.OpenRecordset("SELECT * FROM Smlouvy WHERE (Dokument='" & S_string & "' AND ID_siar IS NULL );", dbOpenDynaset) If rst_Source.RecordCount > 0 Then 'pokud je tam jeden a více záznamů pole tam je End If end sub

xmajky

Přidáno: 04.12.14 12:05

Tak ještě jednou pro nepřehlednost vkládám jenom kód. Sub Kontrola_zaznamu() Dim S_string As String Dim db As Access.Application Dim rst_Source As DAO.Recordset Set db = New Access.Application 'db.Visible = True 'Zaleží zda chcete vidět aplikace ACCES db.OpenCurrentDatabase "C:\SOUBORY\Smlouvy.accdb" 'Cesta k MS ACCES databazi S_string = "text" 'Hledana hodnota Set rst_Source = CurrentDb.OpenRecordset("SELECT * FROM Smlouvy WHERE (Dokument='" & S_string & "' AND ID_siar IS NULL );", dbOpenDynaset) If rst_Source.RecordCount > 0 Then 'pokud je tam jeden a více záznamů pole tam je End If end sub

Honza Novák

Přidáno: 04.12.14 21:27

Dobrý den Jsem naprostý začátečník a potřeboval bych poradit jak sestavit makro, které by vykonávalo následující činnost: V určeném sloupci (v tomto případě sloupec G) projde postupně všechny buňky, ověří jestli je v nich číslo nebo ne a pokud ano,do sousední buňky (tedy na stejný řádek kde je číslo ve sloupci G ale do sloupce H) vypíše hodnotu která se rovná hodnotě * 6,7

Xmajky

Přidáno: 05.12.14 07:12

Dobrý den, zkuste si vytvořit modul v Visual basic editoru a do něj vložit tento kod. Určitě máte nějaký sloupec, který nemá prázdné buňky potom bude lepší ho dát do podmínky While, místo omezení na 1000 řádků. Jak je v tomto případě. Sub macro() Dim I as integer I=1 Do While I<1000 If Worksheets("Nazev listu").Cells(I,7)<>"" then Worksheets("Nazev listu").Cells(I,8)=Worksheets("Nazev listu").Cells(I,7)*6,7 endif Loop End Sub

Jojo

Přidáno: 08.12.14 07:29

To Honza Novák:Sub Test() For rw = 1 To 10 If IsNumeric(Cells(rw, "G")) Then Cells(rw, "H") = Cells(rw, "G") * 6.7 End If Next rw End Sub

Honza

Přidáno: 16.12.14 20:27

Nejjednodušší řešení je podle mého napsat do první buňky v sloupci H vzorec =KDYŽ(G1<>"";G1*6.7;"") a ten za ouško zkopírovat do celého sloupce.

Barča

Přidáno: 01.01.15 20:33

Dobrý večer, chtěla bych se zeptat, zda někdo z vás neví jak bych mohla propojit zaškrtávací políčko s textem v tom samém řádku? Mám za úkol vytvořit funkci, která po zaškrtnutí políčka přeškrtne text v řádku. Nepomohl byste mi někdo prosím? Děkuji Barča

Jojo

Přidáno: 07.01.15 07:45

To Barča:Private Sub CheckBox1_Click() 'Prepínač preškrtnutia celého riadku If CheckBox1.Top > Range("A1").Top And CheckBox1.Top < Range("A2").Top Then Range("A1").EntireRow.Font.Strikethrough = CheckBox1.Value End If End Sub

Honza

Přidáno: 02.02.15 16:53

Dobrý den, prosím moc o radu. Mám excel o 12 listech na celý rok a potřebuji tisnout někdy jen jeden list a někdy všechny, chtěl bych aby bylo možné zadat počet listů, které se mají vytisknoutnapříklad pomoci číselníku. Děkuji moc Honza

Franta

Přidáno: 07.02.15 14:45

Dobrý den potřebuji poradit,jak vynásobit jednotlivé vyfiltrované buňky. pžíklad. 1.2 2.2 3.4 1.8 1.35 -------- *20 jde o výpočet kurzu ve fotbale. Předem děkuji

Franta

Přidáno: 07.02.15 14:54

Dobrý den Omlouvám se ale zapoměl jsem napsat žeto potřebuji použít v makru abych to nemusel dělat ručně. Děkuji

Tonda

Přidáno: 26.03.15 16:35

Dobrý den, obracím se na Vás s prosbou o informaci ohledně makra v excelu. Mám vytvořenou tabulku v excelu kterou bude používat několik uživatelů na různých PC. Tento dokument je sdílený skrze DROPBOX. V tomto zmiňovaném dokumentu mám vytvořené 3 makra. Slouží k uložení údajů za celý rok, za 1.pol, za 2.pol ve formátu pdf na plochu počítače. Volbu uživatele bych chtěl volit formou Active X ( Pole se seznamem ). Kde v buňkách S1-S7 jsou uživatelé a seznam mám propojený s buňkou S11 kde se mění číslo podle toho jaký uživatel se navolí. A teď se vracíme k jádru problému. Již vytvořená makra mají cestu na plochu na mém PC. Problém je že neumím napsat podmínku když tak abych měl např. sedm cest na plochy všech uživatelů. (cesty mám napsané, zjistil jsem si je v ostatních PC). Snad je zde popsaný daný problém srozumitelně. Zkoušel jsem snad všechno co mě napadá, ale pořád mi to nelze spustit. Mockrát děkuji za odpověď.

Milan Kalabis

Přidáno: 10.04.15 13:48

Dobrý den. Mám takový dotaz. Jde ve VBA zjistit aktuální velikost formuláře, aplikace a celé obrazovky? Děkuji.

Michaela

Přidáno: 16.04.15 11:14

Dobrý den, obracím se na Vás s prosbou o radu, mám případ: Sub Makro1() ' ' Makro1 Makro ' Selection.End(xlToRight).Select Selection.End(xlDown).Select Range("A1:F1088").Select Range("F1088").Activate End Sub jak docílím toho, abych měla absolutní hodnotu výběru?? Jedná se mi o to, že tabulka je každý měsíc jinak veliká/dlouhá - šířka zůstává na F (6). Při školení, které jsem absolvovala, jsem nejspíš nedávala pozor :( Předem děkuji

David

Přidáno: 17.04.15 17:05

Zdravím Vás, potřeboval bych poradit, mám makro, které mě hodí celý sešit do fullscreenu: Sub HideStuff() Application.DisplayFullScreen = True Application.DisplayFormulaBar = False ActiveWindow.DisplayWorkbookTabs = False ActiveWindow.DisplayHeadings = False ActiveWindow.DisplayGridlines = False End Sub Problém je ale v tom, že sice se mě do fullscreenu hodí celý sešit, jenže záhlaví (ActiveWindow.DisplayHeadings = False) mě zmizne jen na tom listu, na kterém spouštím tlačítkem makro a to se mě nelíbí. Pokud by nějak šlo přepsat kód, aby fungoval na všechny listy stejně, nebo bych udělal na každém listě makro zvlášť a ty pak vyvolal jedním, ale nevím jak. Děkuji za odpověď, pokud to bude možné...

Jojo

Přidáno: 20.04.15 08:37

To Michaela: -- Posledný riadok v stĺpci "A": 'rwLast rwLast = Range("A" & Rows.Count).End(xlUp).Row

Jojo

Přidáno: 20.04.15 09:23

To David: -- Celá obrazovka(Full Screen) pre všetky listySub HideStuff() Application.DisplayFullScreen = True Application.DisplayFormulaBar = False ActiveWindow.DisplayWorkbookTabs = False For Each sh In ActiveWorkbook.Worksheets sh.Activate ActiveWindow.DisplayHeadings = False ActiveWindow.DisplayGridlines = False Next sh End Sub

David

Přidáno: 20.04.15 16:25

díky moc, funguje :D

Milan

Přidáno: 22.04.15 21:39

Ahoj VBAci, potřebuji dostat do VBA pro Excel nebo Word zvukovou stopu. Vyčetl jsem, že to jde pouze v Power Poitu ale neumím použít ovládací provek WindowsMediaPlayer. Jaká je syntaxe tohoto příkazu, abych mohl vybírat stopy z vytvořeného seznamu? A kde může být play list uložen, abych se na něho mohl odvolat? Ve Vývojáři je tato funkce ukrytá pod Další ovládací prvky. Po rozbalení roletky je to poslední položka. Moc děkuji Milan

Hana

Přidáno: 30.05.15 20:05

Dobrý den, pod článkem je uvedena aktualizace z roku 2014. Nebylo by tedy vhodné aktualizovat článek např. pro Excel 2010 a vyšší? S pozdravem H.

Johny

Přidáno: 17.06.15 16:11

Dobrý den, prosím poradí mi někdo ohledně makra. Mám excelový soubor o 12 listech na jednoho zaměstnance, souborů mám asi 30 ve stejném formátu, potřeboval bych z jednotlivých listů vytáhnout pracovní dobu a to tak, že by makro prohledalo vždy stránku podle zadání (měsíce) a prošlo by všech 30 souborů. Děkuji Johny

Petra

Přidáno: 07.07.15 15:20

Zdravím vás, hodně mi tento web pomohl, ale stále si nemůžu pomoci s takovou malou kravinkou. Mým ukolem je projít sešit, pospírat data a vložit je na jendu stránku a různě seřadit. Ale bohužel se mi nedaří tyto data vypsat na poslední (měl by to být 6)list. Kod je následující: Sub Blokace() Dim w As Integer Dim lr, lr2 As Integer Dim wb1 As Workbook Set wb1 = Workbooks.Open("cesta dokumentu") Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Tabulka" ' kopie záhlaví ActiveWorkbook.Worksheets(1).Select Range(Cells(2, "A"), Cells(2, "N")).Select Selection.Copy Windows(wb2.name).Activate ActiveWorkbook.Worksheets(6).Select Selection.PasteSpecial Paste:=xlPasteAll totalPSQ = 0 For w = 1 To 9 Windows(wb1.name).Activate ActiveWorkbook.Worksheets(w).Select lr = Cells(Rows.Count, "A").End(xlUp).Row ' výběr oblasti pro kopírování Range(Cells(3, "A"), Cells(lr, "N")).Select Selection.Copy ActiveWorkbook.Worksheets(6).Select lr1 = Cells(Rows.Count, "A").End(xlUp).Row ' výběr oblasti pro vložení Cells(lr1 + 1, "A").Select Selection.PasteSpecial Paste:=xlPasteAll Next ' seřazení hodnot Z -> A Cells(1, 1).Select ActiveWorkbook.Worksheets(6).Sort.SortFields.Clear 'řázení podle deadline Columns("K:K").Select ActeveWorkbook.Worksheets(6).Sort.SortFields.Add Key:=Range("K1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ' řazení podle hodnoty ActiveWorkbook.Worksheets(6).Sort.SortFields.Add Key:=Range("E:E") _ , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ' řazení podle počtu kusů ActiveWorkbook.Worksheets(6).Sort.SortFields.Add Key:=Range("D:D") _ , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(6).Sort .SetRange Range("A:N") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWindow.Zoom = 70 End Sub A tyto data chci pak použít do kontingenční tabulky a z tabulky udělat další tabulku. Jde to taky pomocí VB nebo musím použít funkci excelu =ZÍSKATKONTDATA ? Děkuji moc.

Honza

Přidáno: 08.07.15 20:13

Zdravím, potřeboval bych makro na vytvoření klikatelného seznamu souborů excelů v danéí složce . Např. mám složku se 100 soubory (excel) a potřeboval bych v ní vytvořit nový excelový soubor. Buňka A1 by odkazovala na 1. soubor ve složce, A2 na druhý...až A100. Souborů mám ve složce fakt hodně a nechce se mi odkazovat přes hypertextový odkaz po jednom souboru. Děkuji za pomoc.

Šerpa

Přidáno: 01.08.15 18:50

Dobrý den Mám Windows 7 a Excel 2003 a potřebuji v souboru zkomprimovat asi 15000 obrázků (velikost souboru je 230 MB) Komprese, kterou mi nabízí samotný Excel mi nevyhovuje, 96 bodů na palec je málo, 200 bodů na palec je hodně. Potřeboval bych hromadnou komprimaci s možností definovat velikost komprimace obrázků. Snad by to šlo pomocí makra. Díky

Polda18

Přidáno: 11.10.15 13:42

Zdravím. Jak se dá pomocí VBS tisknout konkrétní list sešitu? Potřebuju pomocí maker poslat list sešitu na hlavní port, kde mám připojenou tiskárnu. Nechce se mi kvůli záznamu makra zapínat tiskárnu a tisknout sešit, navíc potřebuju před tiskem vypsat datum a čas tisku a dokument automaticky uložit na své původní místo. Byl by možný alespoň odkaz na návod, jak to provést? V programování jsem začátečník...

Konec MAKRA

Přidáno: 05.03.16 10:49

Dobrý den. Potřeboval bych poradit, jak ukončit skript VBA maker. Při otevření jakéhokoli excelu se mi automaticky otvírá. Díky

Ryba

Přidáno: 09.03.16 15:31

Chtělo by to trochu obnovit v nvých verzích excelu už je to dost odlišné

Nikola

Přidáno: 01.04.16 13:23

Dobrý den, potřebovala bych pomoci s rozdělením textu do buněk. Veškeré údaje jsou zapsány v jednom řádku, jsou v nich nežádoucí mezery, které musím odstratit, poté text rozdělit do sloupců (jméno, příjmení, adresa, kontakty...), ale ten text se nachází na listu1 a já potřebuji přes tlačítko očištěná data již ve sloupích vložit na list2. Dělala jsem to přes makra, ale nevím, jak makro upravit, aby se ta očištěná data vložila na list2. Hlásí mi to chybu. Děkuji za ochotu, Nikola

Jojo

Přidáno: 05.04.16 14:12

To Nikola: -- zápis na "list2", alebo č.2Sheets("List2").Range("A1") = OcistData 'ALEBO Sheets(2).Range("A1") = OcistData

Kuba

Přidáno: 30.04.16 09:31

Dobrý den, jak zařídím aby se Private Sub CommandButton1_Click() Dim varNumbers As Variant Dim i As Long Dim k As Long Dim strMsg As String Dim dtmBegin As Date k = 5 Me.Range("A6:A10006").ClearContents ' Zachycení začátku stopování a vytváření náhodných čísel dtmBegin = Now() varNumbers = GetRandomNumbers( _ Me.Range("B1"), _ Me.Range("B2"), _ Me.Range("B3")) ' Vypnutí automatického přepočítávání Application.Calculation = xlCalculationManual strMsg = "Doba vytvoření náhodných čísel : " & Format(Now - dtmBegin, "nn:ss") ' Zadání výsledku For i = LBound(varNumbers) To UBound(varNumbers) Me.Cells(k, 1).Value = varNumbers(i) k = k + 1 Next ' Zapnutí přepočítávání a nový přepočet Application.Calculation = xlCalculationAutomatic Application.Calculate End Sub opakovalo do cyklicky stále dokola, do té doby, než bude v buňkách C6:C10 řetězec "Dobré". Generuje to čísla v návaznosti na další kontrolu a potřebuji mít splněných právě těch 5 podmínek. Děkuji, Kuba.

Kuba

Přidáno: 03.05.16 20:36

Tak to ještě zkusím zkrátit... Jak napsat opakování nějakého makra (VBA) do splnění určité podmínky??? Díky, Kuba.

Jojo

Přidáno: 09.05.16 12:51

To Kuba: ak otázke rozumiem správe, tak cez Do..Loop, podľa potreby v kombinácii s While,Until,IF,Exit Do napr:Sub Test() Do i = i + 1 If i = 5 Then Exit Do Loop End SubALEBODo While i < 5 i = i + 1 LoopALEBODo i = i + 1 Loop Until i = 5

Kuba

Přidáno: 16.05.16 21:01

Jasně Sub Test() Do něco... bla bla bla If i = 5 Then Exit Do Loop End Sub If i = 5 - jak zadám tuto podmínku? Protože If "C12" = 5 nefunguje. I když dám např.: i = Range("C12").Value Prostě potřebuju, aby se cyklování zastavilo (cyklování VBA), když bude v jedné buňce číslo 5.

Jojo

Přidáno: 20.05.16 12:22

To Kuba: -- If Range("C12") = 5 Then Exit Do

Lukáš

Přidáno: 24.05.16 22:36

Prosím o radu s oblastí při neplnění/splnění podmínek 1) Chci otevřít soubor na ploše Workbooks.Open Filename:="C:\Users\Desktop\Seznam.xls" soubor chybí: i = MsgBox("Soubor není na ploše") soubor je: makříčko pokračuje dále 2) V tabulce seznam.xls v buňce B3 musí být hodnota "42499" hodnota není: i = MsgBox("Chybí hodnota") hodnota je: makříčko pokračuje dále 3) Buňka C3 musí obsahovat jakoukoliv hodnotu hodnota není: i = MsgBox("Chybí hodnota") hodnota je: makříčko pokračuje dále Předem velmi děkuji (Snad je to srozumitelné)

Pepa

Přidáno: 07.06.16 13:27

Dobrý den, jsem pouhým uživatelem excelu. Potřeboval bych z dat na několika listech v jednom souboru vyhledat údaje podle zadaného jednoznačného kódu a doplnit hlavní tabulku o další údaje uvedené ve sloupcích; jakou funkci a jakou syntaxi použít? Nebo se budu muset učit programovat makra? Děkuji za tvůj čas.

Honza

Přidáno: 01.07.16 17:04

Ahoj, 1) rád bych poděkoval za skvělé stránky. 2) Rád bych kohokoliv zde poprosil o pomoc. Rád bych si v excelu předpřipravil statické výpočty. Statický výpočet musí být dobře kontrolovatelný. To znamená že výpočet je ve formě: x=obecný vzorec=číslené hodnoty=výsledek x=a*b=2*4=8 V excelu lze na kartě vložení/symboly/rovnice vkládat obecný tvar rovnice. Celý výpočet bych provedl v buňkách a rád bych, aby jsem napsal v nástroji rovnic obecné znění a následně excelu "řekl" - aby z jednotlivých buněk kopíroval - bral jednotlivé hodnoty - číselné a dosazoval to za mě do vzorce na správné pozice - závěrem přibude poslední = .. a za ním aby vzal z jiné buňky hodnotu výsledku a dosadil ji na tuto pozici. Pokud si s tím někdo bude vědět rady, moc mi to pomůže p.s. o variantě toho že v editoru dopíšu čísla která si přečtu v buňkách samozřejmě vím, ale v množství v jakém bych to rád dělal to bude hrozná otročina :-) Děkuju Honza

ITmama2015

Přidáno: 24.07.16 22:46

Len taká banalita, nechce mi uložiť a zobraziť poznámku z Properties, keď kliknem pravým tlačidlom v Object Browser. Svoju napísanú poznámku nikde nevidím, ani keď si vkládam funkciu....Nejaké typy?

Marek

Přidáno: 05.10.16 13:19

Zdravim, rad by som sa spytal ci je mozne automaticky spustit makro (napr o 8:00) bez toho aby som otvoril excel, zapol pc?

Marek

Přidáno: 25.10.16 20:33

Dobrý deň, chcem sa opýtať či je možne vytvoriť tlačítko v rýchlom spustení ktorým môžem ovládať viacero makier napr. ako roztvaraci zoznam, v ktorom keď kliknem na jednotlivé makra tak ich spustím. ďakujem.

Jojo

Přidáno: 28.10.16 13:22

To Marek: -- v časti rýchly prístup som sa ešte nestretol, ale pre tlačítka na inom mieste viď.napr.: -- http://wall.cz/excel-navod/prizpusobeni-pasu-karet-ribbon-vlastni-pas-karet?email=form -- Pre iné návody treba hľadať slovíčka: Custom + Ribbon






Excel


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