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

Jste zde: Úvodní stránka » excel » vba-priklady-kodu » prakticke-ukazky-kodu-excel-vba

VBA Excel - praktické ukázky kódu pro použití

Videokurzy Excel

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

kódy pro práci ve VBA...

Úvod

Sem tam potřebuji rychle nějaký příkaz v Excelu a jelikož není v hlavě tak musím složitěji hledat v nápovědě. Navíc ať neumusím odpovídat stále na stejné dotazy stačí když pošlu odkaz a dotyčný si může požadovaný příkaz najít.

Takže nebudu to okecávat a následuje seznam kódu. Ať slouží.

Práce s mřížkou

Sub VBA_Excel_Mrizka_zapnuti()
  ActiveWindow.DisplayGridlines = True
End Sub

Sub VBA_Excel_Mrizka_vypnuti()
  ActiveWindow.DisplayGridlines = False
End Sub

Sub VBA_Excel_Mrizka_opak()
  stav_ve_kterem_je_mrizka = ActiveWindow.DisplayGridlines
  ActiveWindow.DisplayGridlines = Not stav_ve_kterem_je_mrizka
End Sub

Odkazy v Excelu

Sub VBA_Excel_RC_odkazy()
  With Application
    .ReferenceStyle = xlR1C1
  End With
End Sub

Sub VBA_Excel_normalni_odkazy()
  With Application
    .ReferenceStyle = xlA1
  End With
End Sub

Hypertext

Sub VBA_Excel_hypertext_vlozit()
  ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
    "http://office.lasakovi.com", TextToDisplay:="office.lasakovi.com"
End Sub

Komentare

Sub VBA_Excel_komentar_vloz()
  ActiveCell.AddComment
  ActiveCell.Comment.Visible = False
  ActiveCell.Comment.Text Text:="Pavel Lasák:" & Chr(10) & "Komentář"
End Sub

Sub VBA_Excel_komentar_zobraz()
  ActiveCell.Comment.Visible = True
End Sub

Sub VBA_Excel_komentar_skryt()
  ActiveCell.Comment.Visible = False
End Sub

Sub VBA_Excel_komentar_zmena_stavu()
  stav_ve_kterem_je_komentar = ActiveCell.Comment.Visible
    ' odpověď střízlivý nedostanete :)
  ActiveCell.Comment.Visible = Not stav_ve_kterem_je_komentar
End Sub

Sub VBA_Excel_komentar_smaz()
  Selection.ClearComments
End Sub

Odstraň diakritiku

Function OdstarnDiakr(source As Variant) As String Const cz As String = "áÁčČďĎéÉěĚëËíÍňŇóÓöÖřŘšŠťŤúÚůŮüÜýÝžŽ" Const en As String = "aAcCdDeEeEeEiInNoOoOrRsStTuUuUuUyYzZ" Dim TmpS As String Dim OutS As String Dim I As Integer OutS = "" If IsNull(source) Or source = “” Then OdstarnDiakr = "" Else For I = 1 To Len(source) TmpS = Mid(source, I, 1) If InStr(1, cz, TmpS, vbBinaryCompare) > 0 Then TmpS = Mid(en, InStr(1, cz, TmpS, vbBinaryCompare), 1) OutS = OutS & TmpS Next I OdstarnDiakr = OutS End If End Function

Práce s listy

Sub VBA_Excel_Odstraneni_Listu()
  ActiveWindow.SelectedSheets.Delete
End Sub

Sub VBA_Excel_Odstraneni_Listu_bez_dotazu()
  Application.DisplayAlerts = False
  'a Excel nedá dotaz zda opravdu chcete smazat... Pozor na to ...
  ActiveWindow.SelectedSheets.Delete
End Sub

Závěr

Chybí Vám nějaký kód? Zanechte vzkaz v komentáři. Pokusím se doplnit (nebo doplní některý z čtenářů...).

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

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


Jackie

Přidáno: 19.01.11 14:08

Ve formuláři mám několik textboxů. Během zpracování formuláře je potřebuji vyprázdnit. Nechci v makru otrocky psát: Vymaž textbox1, 2 ... Jde to v cyklu?

Pavel Lasák

Přidáno: 19.01.11 17:47

To Jackie: Jde. Více v článku For Next - Cykly

DoE

Přidáno: 25.01.11 16:32

Lze naprogramovat funkci typu "když je splněna podmínka (např A1=A2) tak ulož do C1 hodnotu x, pokud splněná není ulož do D1 hodnotu y" ? diky

Pavel Lasák

Přidáno: 25.01.11 19:07

To DoE: Použil bych funkci KDYŽ v buňce C1 i D1 (což je nejednoduši) nebo to naprogramovat ve VBA (což je složitější)

Michal Manis

Přidáno: 31.01.11 09:48

Potřebuji makro nahrazující podmíněné formátování. Potřebuji cca 12 podmínek a Excel do 2007 má jenom 6. Mám Makro které podle hodnoty čísla zabarví stejnou buňku podle škály. Ale potřeboval bych aby se zabarvila jiná buňka než ta ve které je daná hodnota. Nejlépe aby se tam s formátem vepsalo i číslo. Přéklad mohu poslat mailem. Děkuji za pomoc. michal@manisovi.cz

Pavel Lasák

Přidáno: 02.02.11 20:10

To Michal: Osobně bych použil dva (tři) sloupce.

Marián

Přidáno: 07.02.11 15:19

Dobrý den. Prosím o radu. Po vyhledáni poslední vyplnené bunky v slopci : Set a = Columns(ActiveCell.Column) Set lastcell = a.Cells(a.Cells.Count).End(xlUp) lastcell.Offset(1, 0).Activate potrebuji doplnit součet hodnot v danem sloupci. Jak na to? Dekuji za odpoved.

Pavel Lasák

Přidáno: 07.02.11 19:15

To Marián: Doplnit do buňky funkci SUMA.

Pavel

Přidáno: 21.02.11 15:10

Dobrý den, chtěl bych vytvořit tlačítka na čísla 1 až 9, abych nemusel používat klávesnici. Postup by byl takový, že bych kurzorem označil jakékoliv buňky na listu a po zmáčknutí tlačítka by se do buněk zapsalo číslo. Jde něco takového vytvořit? Děkuji.

Pavel Lasák

Přidáno: 21.02.11 16:16

To Pavel: Potřebujete to z důvodu dotykového displeje? Jelikož toto bych řešil, programem ve windows, který po kliku na položku do které lze zapisovat zobrazí SW klávesnici.

Pavel

Přidáno: 21.02.11 18:19

Ne, mám normální notebook, ale přijde mi jednodužší než ťukat čísla přes klávesnici, tak na to mít tlačítka. Je to možné udělat přes VBA nebo přes makro v MS Excel?

Pavel Lasák

Přidáno: 22.02.11 16:03

To Pavel: Přes VBA makro to lze udělat. Vlož tlačítko ovladacího prvku ActiveX. Pojmenuj 1. Do kódu pro stisk tlačítka vlož: ActiveCell.FormulaR1C1 = "1

Pavel

Přidáno: 22.02.11 19:37

Díky za radu. Bohužel tento příkaz pouze vloží číslo do posledně označené buňky. Já bych potřeboval, aby se číslo vepsalo do všech označených buněk.

Pavel Lasák

Přidáno: 23.02.11 15:58

To Pavel: Cyklem do označených buněk doplnit požadované číslo.

Petr Nový

Přidáno: 09.03.11 15:38

Dobrý den, jak nastavím spouštění formuláře po otevření sešitu? Diky.

Přidáno: 09.03.11 17:53

To Petr:
Private Sub Workbook_Open()
UserForm1.Show
End Sub

Předpokládám, že formulář máš pod názvem UserForm1

Petr Nový

Přidáno: 10.03.11 16:10

Děkuji, funguje to. Formulář se otevře ale hodnoty v něm nejsou aktivní. Součastně spouštím i makro které "naleje" hodnoty do formuláře. Je třeba formulář po otevření aktivovat?

Pavel Lasák

Přidáno: 10.03.11 18:20

To Petr: Těžko říct, nevím jak je formulář vytvořen.

Petr Nový

Přidáno: 11.03.11 11:38

Už jsem toto vyřešil a to tak že formulář otevírám až po startu makra. Ve formuláři mám popisky Label1 až label9. Dá se je naplňovat ve smyčce a jak?

Pavel Lasák

Přidáno: 11.03.11 20:23

To Petr: cyklem

For I = 1 To 10
...
Next I

Petr Nový

Přidáno: 11.03.11 20:38

Toto je mi jasné. Jak mám zapsat do smyčky definici popisků? For I = 1 To 10 UserForm1.LabelI = něco Next I tak to nefunguje

Pavel Lasák

Přidáno: 12.03.11 06:07

To Petr: nutno dat i do zavorek např.: userform1.textbox(i).value = format(0,"#,##0.00)

Petr Nový

Přidáno: 13.03.11 09:38

Sub mk1() Dim i Dim a For i = 1 To 5 a = a + 1 UserForm1.TextBox(i).Value = CInt(a) Next i End Sub Ve výsledku je chyba kompilace. Method or data member not found. Proč?

Pavel Lasák

Přidáno: 13.03.11 14:28

Dim i As Integer ? index = CInt(txt.Tag) ? Zrovna jsem u PC bez Excelu.

Petr Nový

Přidáno: 13.03.11 18:07

"Dim a, i as integer" Výsledek je stejný

Pavel Lasák

Přidáno: 14.03.11 15:58

A při změně definice CInt? CInt(txt.Tag)

Petr Nový

Přidáno: 14.03.11 19:00

Ta samá chyba. Kompilátor označi právě TextBox, tož právě v definici textboxu je třeba hledat chybu. A ta nápověda je na p...

Petr Nový

Přidáno: 14.03.11 21:38

tj. nápověda od MS ;-)

Petr Nový

Přidáno: 15.03.11 19:08

Tak tedy řešení je následující. Dim a As Integer For a = 1 To 10 UserForm1("TextBox" & CStr(a)).Value = "Stránka " & CStr(a) Next a Děkuji všem zúčastněným

Pavel Lasák

Přidáno: 16.03.11 16:55

To Petr: Gratuluji. Osobně než nápovědu Microsoftu používám strejdu googla. Jen se blbě ověřuje kód pokud člověk nemá na PC Excel.

Janek

Přidáno: 22.03.11 08:41

Dobry den, potrebuju napsat makro, ktere otevre soubor z adresare, ve kterem se nachazi vychozi soubor (ten, v kterem je makro umistene). Nevim jak napsat relativni cestu k souboru.

Pavel Lasák

Přidáno: 22.03.11 19:03

To Janek: Tento odkaz Vám nepomůže? http://groups.google.com/group/microsoft.public.excel.programming/msg/0f8e66f9e6f73cc4?pli=1

Michal

Přidáno: 08.04.11 01:29

Dobry den, neviem si dat rady s makrom, ktore by mi malo zmenit farby bunky v pripade, ze je na zaciatku riadku pismo napr. Arial bold 10. Dakujem za pomoc. s pozdravom.

Petr Nový

Přidáno: 19.04.11 16:42

Dobrý den, existuje v makru jednoduchá funkce na konverzí datumu/času na juliánské datum? Děkuji za radu

Pavel Lasák

Přidáno: 19.04.11 20:13

To Petr: Popsáno je na stránkách microsoftu http://office.microsoft.com/en-us/excel-help/insert-julian-dates-HP003056114.aspx přímo za použití klasických funkcí.

Bob

Přidáno: 02.05.11 11:08

Dobrý den, jak lze prosím zapsat kód, který by změnil název souboru na můj vlastní název (názvem myslím v levé části nahoře kde je např. Microsoft Excel - Sešt1. A já bych chtěl např. jen "Můj sešit" nebo i třeba Microsoft Excel - Můj sešit. 2.dotaz Líbí se mi, že některé procedury píší v dolním levém panelu co procedura dělá. Např.že zpracovává x tý řádek databáze a kolikátý je z celkového počtu nebo jen píše, že právě upravuje formát apod. Jak se toto programuje? Díky moc.

Pavel Lasák

Přidáno: 02.05.11 20:09

1) Název se změní tím že sešit uložíte: ActiveWorkbook.SaveAs Filename:= "C:\Muj-sesit.xlsm"

2) do stavového řádku lze zapsat příkazem Application.Statusbar = "Text ve stavovém řádku"

bob

Přidáno: 03.05.11 11:11

Díky za odpověď na vlastní název souboru. Ale já nemyslel ukládání nového souboru, ale jen, aby se v levé části nahoře zobrazoval můj definovaný název bez ohledu na skutečný název souboru. Např. soubor se bude jmenovat "Database.xls", ale vlevo nahoře budu chtít vidět text "Aplikace xy verze 1.0 pro planovani" nebo cokoliv jiného, třeba i v kombinaci skutečného názvu souboru + můj vlastní text. Díky

Pavel Lasák

Přidáno: 03.05.11 17:07

To Bob: ThisWorkbook.Application.Caption = "office.lasakovi.com" funguje v MS Excel. Kód pro MS Access bohužel nevím z hlavy.

Petr Nový

Přidáno: 18.05.11 08:18

Dobrý den, poraďte mi prosím jak spolehlivě dostanu data z DDE serveru do makra. Nalinkoval jsem buňky sešitu na DDE server, ale jednou za den komunikace spadne. Děkuji, Petr

jakub

Přidáno: 18.05.11 09:56

Dobrý den, potřeboval bych makro které mi vypíše absah všech vyplněných buněk do txt souboru, a jednotlívé záznamy oddělí středníkem.

Pavel Lasák

Přidáno: 18.05.11 19:02

To Petr: tohle bohužel nevím, možná poradí někdo z čtenářů.

Pavel Lasák

Přidáno: 18.05.11 19:03

To Jakub: Nešlo by soubor uložit jako *.csv a pak přejmenovat (export umí automaticky oddělovat středníkem)? V buňkách jsou pouze data, nebo i vzorce (vzorec jako číslo nebo daný vzorec)? desetinná čísla jsou oddělena čárkou nebo tečkou? Každý řádek bude mít odpovídající řádek v txt souboru, nebo všechna data v jednom "nekonečném" řádku?

awr

Přidáno: 31.05.11 19:36

Dobry den, mam dotaz jestli lze vlozit pomoci maker do nazvu ukladaneho exceloveho sesitu hodnotu z urcite bunky. Napriklad na listu "a" mam v bunce "A1" hodnotu "test" - tak by se ukladany soubor jmenoval "test.xlsx". Jde mi o to abych mohl hodnoty v bunce menit a ukladat tak soubor pod ruznymi nazvy pomoci nejakeho cyklu. diky

Pavel Lasák

Přidáno: 31.05.11 21:20

To awr: Jasně jde ID_nazev = Worksheets("List1").Cells(1, 1) UkladanySoubor = "C:\data\" & ID_nazev & ".xlsx"

awr

Přidáno: 31.05.11 22:07

Diky moc, uz to slape!

Fik

Přidáno: 01.07.11 16:32

Dobrý den, mam napragramované automaticke ukladani a potreboval bych nastavit do Filename ulozeni do mista ulozeni puvodniho souboru.

Pavel Lasák

Přidáno: 01.07.11 18:05

To Fík: Tj. Zjistit adresář v kterém se aktuální soubor nachází nebo kompletní cestu?

Fik

Přidáno: 04.07.11 13:00

Zjistit adresář, ve kterém se aktuální soubor nachází by mi stačilo, dál už bych to udělal sám

Tomas

Přidáno: 07.07.11 12:46

Zdravím všechny ve spolek řeším věc, u které si ani nejsem zcela jist, že to lze vyřešit : ) ... Potreboval bych vykoumat makro script, který by v podstatě dělal následující. Někde na disku je soubor s údaji o výkonnosti zaměstnanců (linka1 měla produktivitu 93% v týdnu1, z toho 2% ztrátovost, tyden 2 až třeba 20) a teďka to makro by mělo umět na zmáčknutí natáhnout tyto data do sebe, a potom z nich vytvořit grafy ve formátu graf 1 : linka1 OsaY=procenta, osaX=daný týden, s tím, že pro každou linku to uděla vlastní graf, ideálně na samostatný list, nebo stránku tak, aby se to pak dalo rovnou tisknout

Pavel Lasák

Přidáno: 07.07.11 20:32

To Fik: Adresar = ThisWorkbook.Path

PavelD

Přidáno: 08.07.11 14:25

Dobrý den, prosim o radu, ve FRM zadám datum do Textboxu1 8/7 (zobrazí 8.7.2011) v Textoxu2 potřebuji aby dle data TXB1 byl ihned zobrazen automaticky den ( pátek ). Nevím zda to vůbec jde.

Pavel Lasák

Přidáno: 08.07.11 20:45

To PavelD: Stačí změnit formát a ten zobrazit. Range("A2").Select ActiveCell.NumberFormat = "DDDD" TextBox2.ControlSource = "A2"

David Fiala

Přidáno: 10.08.11 12:32

Dobrý den, potřeboval bych najít pomocí VBA soubor (edgecam.exe), který se nachází vždy na C:\Program Files\ ..... nějaký jeden adresář ..... \CAM\EdgeCam.exe . Pokud máte nějaké návrhy na elegantní řešení , tak vám budu moc vděčen.

Fik

Přidáno: 18.08.11 11:33

Dobrý den, mám formulář s několika comboboxy, které se vnázvu lyší pouze číslem. Potřeboval bych jejich hodnoty zapsat do tabulky a nechce se mi to zadávat pro každý zvlášť, proto jsem zkusil napsat cyklus, ale nějak mi to nechce fungovat. For i = 1 To 6 If (cboPolozka & (i)) = "" = False Then (cboPolozka & (i)).Value = ActiveCell.Value End If i = i + 1 Next Děkuji

Petr Nový

Přidáno: 14.09.11 11:49

Dobrý den, potřebuji si spouštět skript každou minutu. Poraďte mi prosím jak se dá tohle v VBA jednoduše zařídit. Diky, Petr

Pavel Lasák

Přidáno: 15.09.11 16:42

To Petr: Sub Spust1minuta() Application.OnTime Now + TimeValue("00:01:00"), "MujSkript" End Sub Popsáno v článku http://office.lasakovi.com/excel/vba-triky/vba-excel-ukonceni-makrem/

Petr Nový

Přidáno: 26.09.11 15:26

OK, diky. Petr

Stano

Přidáno: 30.09.11 22:05

Zdravím všechny koumáky,prosím poraďte Pomocí DDE se mění data v buňce A1. Prosím poraďte jak je dostat do do aktivní buňky( ta se posouvá), tak aby se se změnou v A1 ( ta starší buňka bývale aktivní ) nepřepisovala. Moc díky!

Tomáš

Přidáno: 19.10.11 08:55

Ahoj vložil jsem si makro pro "hod kostkou" (randbetween), ale potřebuji, aby se mi tato hodnota nepřepočítávala, přičemž přepočet ostatních buněk musí fungovat i nadále. Díky za radu.

Pavel Lasák

Přidáno: 19.10.11 16:24

To Stano: S DDE nepracuji, takže odpověď nevím, ale možná někdo s čtenářů poradí.

Pavel Lasák

Přidáno: 19.10.11 16:26

To Tomáš: Co dát randbetwenn do podmínky if.

Tomáš

Přidáno: 20.10.11 08:40

Mám na mysli vytvoření tlačítka, po jehož stisknutí se mi do aktuální buňky vyplní hod kostkou. Pak si označím další buňku, provedu totéž, ale chci, aby se mi předchozí hod nenahradil novým náhodným hodem. Pokud to lze pomocí if, prosím konkretizovat (nejsem moc maker znalý). Děkuji pěkně

Pavel Lasák

Přidáno: 20.10.11 16:09

To Tomáš: podmínky if then else

Martin

Přidáno: 09.11.11 18:22

Pěkný večer potřeboval bych radu jak provest součet hodnot ve sloupci když na první buňku sčítané oblasti ve sloupci(nikdy nesčítám celý sloupec) mě dostane podmínka a poslední buňka je poslední hodnota ve sloupci. Výsledný součet potřebuji zapsat do jiného sloupce a jiného řádku. Díky za návrhy

Zdeněk

Přidáno: 23.11.11 17:03

Zdravím, jsem makrový analfabet a potřeboval bych poradit. Pro automatické zkoušení slovíček používám toto makro: Sub Makro1() If Range("r3") <> "Zkoušení slovíček a konverzace pouze ručně." Then 'napiš Zkoušení slovíček a konverzace pouze ručně. do buňky f3 pro zastavení kódu Application.OnTime Now + TimeValue("00:00:10"), "my_Procedure" Else MsgBox "To už vše umíš že končíš? Nebyl bych si tím tak jistý.", vbOKOnly + vbInformation, "Chceš opradu skončit automatické zkoušení?" End If End Sub Vše v pohodě funguje, ale já bych potřeboval měnit čas cyklu v tomto případě 10 sekund třeba na 15 s. Doposud si vždy přepíšu čas v makru, ale potřeboval bych někde v listě mít proměnné číslo(čas), které by se měnilo automaticky v makru. Děkuji, případně sešit mohu poslat.

Pavel Lasák

Přidáno: 23.11.11 23:11

To Zdeněk: MujCas = "12:12:12" y = TimeValue(MujCas) MsgBox y

Zdeněk

Přidáno: 27.11.11 16:01

Díky, ale jak jsem psal, jsem VBA analfabet (makro mi kdysi dělal známý) a já nevím, jak to mám do toho svého makra zadat :(

Pavel Lasák

Přidáno: 27.11.11 19:41

To Zdeněk: Pošlete soubor na lasak@centrum.cz pokusím se doplnit.

Luboš Novák

Přidáno: 14.12.11 11:59

Lze zamknout jen list. Potřebuji editovat sdílený sešit několika uživateli na "SVÝCH" listech, ke kterým by se dostali přes heslo. Nebo byste použili jiný způsob. Děkuji

Pavel Lasák

Přidáno: 14.12.11 17:30

To Luboš Novák: Lze v Excel 2007, 2010, karta Revize - zamknout list. A zvolíte si zda s heslem nebo bez hesla.

claire

Přidáno: 04.01.12 14:13

ahoj, mám dotaz.. mám v excelu asi 70 listů a potřebuju, aby jeden záznam makra fungoval po spuštění na všechny listy najednou, abych nemusela jednotlivě překlikávat a spouštět makro.. jak na to? díky!

Pavel Lasák

Přidáno: 04.01.12 16:02

To Claire: Vložit makro do ThisWorkbook nebo ho vytvořit v modulu. A doplnit jej o výběr všech listu. Sheets(Array("List1", "List2", "List3")).Select

Zdeněk

Přidáno: 04.01.12 21:03

Zdravím, nějak nemůžu zkloubit dohromady funkci průměr a když. Udělal jsem nějaké měsíční vyhodnocení v buňce B1:B12. V buňce B13 mám vzorec =průměr(B1:B12). Pokud budu mít všechny měsíce vyplněny nějakou hodnotou, tak průměr funguje. Jenže když budu mít vyplněný třeba pouze leden 2012, tak celoroční průměr není pravdivý, protože data z února - prosince mít zatím nebudu. Potřeboval bych, aby vzorec v B13 ignoroval buňky s nulou. Děkuji za odpověď a přeji hezký večer.

Zdeněk

Přidáno: 04.01.12 21:34

Tak už jsem to zjistil co tam napíšu za vzorec :). =AVERAGEIF(B1:B12;"<>0"). Já se vzorec snažil stále napsat česky a nějak my to nešlo. Je možné, že vzorec lze napsat asi i jiným způsobem. Ale i tak děkuji. Vaše stránky, kde čerpám hodně informací a návodů jsou super. Ještě jednou díky.

Pavel Lasák

Přidáno: 05.01.12 16:39

To Zdeněk: Gratuluji a děkuji. Jak se říka, nejrychlejší pomoc najdeš na konci své paže :)

Petr_N

Přidáno: 24.02.12 13:29

Dobrý den, mohl byste mi poradit jak ve VBA operovat (tj číst a zapisovat) s jednotlivými bity v proměnné typu integer? Diky, Petr

Pavel Lasák

Přidáno: 24.02.12 21:52

To Petr_N: Přečíst údaj z buňky http://office.lasakovi.com/excel/vba-listy-bunky/precti-udaj-do-bunky-excel-vba/ a přes textové funkce najít požadovaný znak http://office.lasakovi.com/excel/funkce/ms-excel-funkce-textove/ jen je nutno ve VBA použít anglické názvy funkcí http://office.lasakovi.com/excel/funkce/ms-excel-funkce-cz-en/

Tomáš Sláma

Přidáno: 12.03.12 19:43

Dobrý den, někdo se tu v diskuzi ptal, jak udělat, aby se makro spouštělo opakovaně za určitý časový interval. Řeším ten samý problém. Dané řešení však provede makro MujSkript jen jednou: Sub Spust1minuta() Application.OnTime Now + TimeValue("00:01:00"),_ "MujSkript" End Sub Kód jsem upravil na: Sub Spust5sekund() Application.OnTime Now + TimeValue("00:00:05"),_ "Spust5sekund" Call MujSkript End Sub Kód funguje, akorát bych potřeboval poradit, jak ho z prostředí listu vypnout, např. jiným tlačítkem a ne Ctrl+Break. Ještě bych se chtěl zeptat, jak časový interval opakování v sekundách zadat v buňce listu, aby se nemusel zadávat ve VBA kódu. Předem děkuji za odpověď!

Pavel Lasák

Přidáno: 13.03.12 19:39

To Tomáš Sláma: Čas z buňky: MujCas = "12:12:12" y = TimeValue(MujCas) MsgBox y třeba přes jinou klávesu Sub DemoOnKey() Application.OnKey "{TAB}", "MojeZprava" End Sub Sub MojeZprava() MsgBox "Stisk Tabelatoru" End Sub nebo doplnit o funkci if then, které bude kontrolovat stisk tlačítka

Lukas

Přidáno: 28.03.12 12:44

Ahoj, prosim Ta, vytvoril som uz nejaky formular, ale potreboval by som kontrolu zadanych udajov. Priklad: Mam 2 polia: meno a priezvisko. Tieto dve hodnoty zapisujem do buniek A1 a A2 po kliknuti na OK. Ale chcel by som pridat podmienku, ze ak je prazdne pole Meno alebo Priezvisko, tak vyhodi msgbox A opat sa vratim do formulara, kde ale osatnu vypisane vsetky predosle udaje a mozem doplnit chybajuce pole. Dufam, ze som to napisal zrozumitelne :)

Pavel Lasák

Přidáno: 28.03.12 20:41

TO Lukáš: to je na článek, zkusím připravit a publikovat

Lukas

Přidáno: 30.03.12 08:28

Ahoj opat. :) Predosly problem som uz vygooglil, len som tam pridal if a end sub ak nastane taky problem. Skor ma zaujima iny problem a to praca s premennymi. Mas formular ktory vyplnis, stlacis tlacitko OK a tieto vyplnene polia sa ti zapisu do buniek. Ale je tam dalsie tlacitko (Vytvor subor) ktore spusta export buniek do .txt suboru. Problem je, ze pokial vyplnim formular a nedam OK, ale rovno Vytvor subor tak neviem skontrolovat, ci v tych poliach vo formulari je nieco zadane alebo nie. Opat zavolat OK tlacitko nemozem, pretoze su v nom kontroly na prazdne polia... Proste by som potreboval vytiahnut nejaku hodnotu z jedneho sub a vediet s nou pracovat v druhom. Snad je to normalne napisane:)

Dan

Přidáno: 31.03.12 20:30

Dobrý den, potřeboval bych radu ohledně automatického filtru. Vím, že pokud chci zobrazit více položek ve filtru musím použít pole Array, ale nevím jak do něj dostat hodnoty těch položek když předem nevím kolik jich budu zobrazovat. Položky co se nacházejí v tom filtru mám na jiném listu a jejich zobrazení bych určoval hodnotou ano/ne ve vedlejší buňce. Děkuji za nějakou radu.

Kuvap

Přidáno: 04.04.12 13:33

Filtroval bych to přes kriteriální tabulku kterou bych vytvořil na základě vstupních položek a jejich logické hodnotě přes fci když.

Dan

Přidáno: 04.04.12 18:53

to Kuvap: tomu vůbec nerozumím.

Dan

Přidáno: 06.04.12 13:29

to Kuvap: Tak už jsem to udělal, dík za radu.

František

Přidáno: 10.05.12 23:49

Prosím vbs scriptem pustit Outlook. Nějak se mi to nedaří. Set object.Outlook = WScript.createObject("Outlook.Application") Outlook.Visible = true Outlook.Add End If ?? Děkuji ??

Pavel Lasák

Přidáno: 11.05.12 15:12

To František: Takhle funguje? Shell ("OUTLOOK")

Vláďa

Přidáno: 27.06.12 11:35

Ahoj všichni, mám makro, které mi ukládá kopie souborů. Nicméně při každém provedení uložení kopie mě to otravuje s hláskou Upozornění týkající se osobních údajů: .... Lze v Makru nejak nastavit, aby se mi tato upozorneni neukazovala? Diky, Vlada

Pavel Lasák

Přidáno: 27.06.12 16:34

To Vláďa: Vypínat pomocí: Application.DisplayAlerts

Vláďa

Přidáno: 28.06.12 09:00

Díky:)

Andrej

Přidáno: 08.08.12 11:14

Dobrý deň, potrebujem meniť napr. frame (obsah) pri kliknuti na ponuku tlacitok. neviete mi poradit? Dakujem

Pavel Lasák

Přidáno: 08.08.12 17:10

To Andrej: Nerozumím dotazu.

Andrej

Přidáno: 09.08.12 10:15

Potrebujem v jednom formulari pri preklikavani tlacitiek (napriklad v menu) aby sa na pravej strane menil obsah (dalsia ponuka tlacitok).

Karel

Přidáno: 09.08.12 11:50

Dobrý den. Při ukládání sešitu s podporou maker (xlsm) do sešitu,který makra nepodporuje (xlsx) mi vždy vyskočí hláška " Následující funkce nelze uložit v sešitech bez maker: Projekt v jazyce VB. Chcete-li pokračovat .... klikněte na tlačítko Ano." Existuje nějaký příkaz, který mi automaticky vybere "Ano" a uloží ho? Děkuji. Karel

Pavel Lasák

Přidáno: 09.08.12 20:42

To Andrej: Změnit tlačítku vlastnost visible na false (zneiditelnit), True (zviditelnit) Private Sub CommandButton1_Click() CommandButton2.Visible = False CommandButton3.Visible = True End Sub

Pavel Lasák

Přidáno: 09.08.12 20:49

To Karel: Nezobrazovat dialogová okna a nepřekreslovat: With Application .ScreenUpdating = False .EnableEvents = False End With vlastní uložení ActiveWorkbook.SaveAs Filename:= NewFile, ..... a nezapomenout opět zapnout With Application .ScreenUpdating = True .EnableEvents = True End With PS: Soubor se uloží bez maker.

Karel

Přidáno: 09.08.12 21:22

Zdravím a děkuji za rychlou odpověď. Pořád se mi ale nedaří. Když chci převést sešit s podporou maker na sešit bez maker, stále tam vyskakuje ta potvrzovací tabulka a před samotným uložením ji musím potvrdit. Tomu jsem se chtěl právě vyhnout a mít tam automaticky "Ano". Mám Office 2010 (pokud to má na to vliv). Jen pro kontrolu, jestli to mám dobře: Sub prevod() With Application .ScreenUpdating = False .EnableEvents = False End With ActiveWorkbook.SaveAs Filename:= _ "C:\pokus.xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True With Application .ScreenUpdating = True .EnableEvents = True End With End Sub Děkuji za vaši trpělivost. Karel

Pavel Lasák

Přidáno: 10.08.12 21:04

To Karel: Nejprve vybrat listy (tj. nebudou se ukládat makra) a ty pak uložit. Sheets("List1").Select ActiveSheet.Copy pro pokusy bych raději volil ukládat jako kopii SaveCopyAs, a pak zavřít vytvořený list Close. With Application .ScreenUpdating = False .EnableEvents = False End With Sheets("List1").Select ActiveSheet.Copy ActiveWorkbook.SaveCopyAs Filename:="D:\test\test.xlsx" ActiveWorkbook.Close (False) With Application .ScreenUpdating = True .EnableEvents = True End With

Karel

Přidáno: 14.08.12 21:22

Super! Děkuji. Funguje to. Karel

Karel

Přidáno: 22.08.12 11:33

Dobrý den. Dá se napsat makro, které odstraní všechna makra na listech (včetně ThisWorkbook) a ve všech modulech? Na netu se mi nepodařilo nic takového najít. Díky. Karel

Karel

Přidáno: 22.08.12 11:39

Ještě doplním: když mám v centru zabezpečení maker zatrženo "Důvěřovat přístupu k objektovému modelu projektu VBA", tak mi to jde (makro na odstranění maker), ale bez toho zatržení ne. Karel

Pavel Lasák

Přidáno: 22.08.12 17:00

To Karel: Uložit jako xlsx (tento soubor neumí ukládat makra a tak se automaticky odstraní).

pejsek

Přidáno: 25.09.12 13:33

Mám na několika stránkách hyperlinkové odkazy, které bych někdy potřebavl při splnění podmínek zobrazit na jiné stránce. Vše ok jen nevím jak aktovovat buňku s hypertextovým odkazem?? Ta funguje jen na dvouklik myši, ale nevím jakým příkazem VBA ji aktivovat?? :-( dík

Pavel Lasák

Přidáno: 25.09.12 16:27

to pejsek: Pomocí VBA potřebujete spustit hypertextový odkaz?

pejsek

Přidáno: 25.09.12 17:34

Jj. jde o otevření obrázků (přes hypertextový odkaz)na základě nějaké podmínky v excelolvské tabulce

Pavel Lasák

Přidáno: 27.09.12 07:12

To pejsek: Pro pomínku použít IF viz: http://office.lasakovi.com/excel/vba-teorie-zaklady/if-then-elseif-else-podminka-excel-vba/ Pro hyperlink v B3 (odkaz na office.lasakovi.com :) je kód pro spuštění Range("B3").Select Selection.Hyperlinks(1).Follow NewWindow:=False Nebo pro otevření Wordového dokumentu tento odkaz http://smallbusiness.chron.com/open-word-document-excel-using-vba-40430.html

Pejsek

Přidáno: 27.09.12 18:31

Jak jednoduché :-) funguje to, dííííík. Pejsek

Pavel Lasák

Přidáno: 27.09.12 21:25

To Pejsek: Rádo se stalo.

Mojmír

Přidáno: 06.10.12 22:56

Dobrý den, Jsem začátečník vba excel. Hci vytvořit formulář s dvěma rámečky. Každý rámeček má 8 zaškrtávací políčka (OB). Potřebuji napsat jednoduchý kód pro formulář, aby se při označení kteréhokoliv OB v rámečku č.1 spustil rámeček č.2. Nechci psát 8x Sub OB_Podklad1_Click() Koef = Material(1) Jmena FR_Podklad_druh.Visible = True End Sub Sub OB_Podklad2_Click() Koef = Material(2) Jmena FR_Podklad_druh.Visible = True End Sub atd. Nevím jak použít cykly pro proceduru sub. Můžete mi poradit?

Pavel Lasák

Přidáno: 07.10.12 08:26

To Mojmír: Využít cyklus For Next http://office.lasakovi.com/excel/vba-teorie-zaklady/excel-vba-for-next-cykly/ - pokud pošlete ukázku pokusím se doplnit.

Lenka

Přidáno: 05.11.12 13:38

Dobrý den, ráda bych si nechala poradit, jak vytvořit makro nebo nějaký jiný fígl, který by mi pomohl vytvořit seznam listů nebo něco podobného. Mám v excel souboru asi 50 listů s různými daty a potřebovala bych poradit, jak si zjednodušit přecházení mezi nimi. Sice je mám seřazené dle abecedy,ale při zapisování dat musím hledat daný list. Šlo by nějak udělat, aby například na každém listě byl seznam nebo nějaký odkaz? snad je mi trošku rozumět. Předem děkuji za radu.

Pavel

Přidáno: 27.11.12 11:10

Prosím potřebuji pomoci co mám kde nastavit v Excelu 2007 abych dostal funkci do listu. Nemám kategorii vlastní při vkládání funkce. dle obr. na http://office.lasakovi.com/excel/vba/ms-excel-vba-uvod/ (excel prostě ty moje funkce nezná :-( a hlásí #NÁZEV?)

VAŠEK

Přidáno: 27.11.12 12:45

dobrý den, potřeboval bych pomoci s kódem funkce níže. zkoušel jsem asi všechno, co se dalo, hledal na internetu, ale nic nefungovalo. snad mi pomůžete. bližší info v komentářích. Function QWERT(a As Range, e As Range) As String ' do argumentu "a" zadám odkaz na nějakou buňku, třeba A1 ' do argumentu "e" zadám také odkaz na nějakou buňku (prázdnou buňku), třeba B1 Dim b As Date ' proměnná pro převedené datum z argumentu "a" Dim c As Date ' proměnná pro zítra Dim d As Date ' proměnná pro včera b = DateSerial(Year(a), Month(a), Day(a)) ' zde se datum převede datum z argumentu "a" c = b + 1 ' vypočítá se hodnota zítra d = b - 1 ' vypočítá se hodnota včera e.Value = c ' zde chci, aby se mi vypočtené datum zítra zobrazilo v buňce B1, kterou zastupuje argument "e", ' ale toto bohužel nefunguje - s tímto potřebuji pomoct QWERT = d 'zobrazí se hodnota včera End Function

Pavel Lasák

Přidáno: 27.11.12 22:27

To Pavel: Máte funkci vloženou v modulu? Deklarovanou jako funcke (funcion)?

Lukáš

Přidáno: 06.01.13 15:32

Dobrý den, potřeboval bych pomoci s jedním kódem. Potřeboval bych vyhledat data (zadaná do texboxu v Excelovském formuláři) v databázi Access. Konkrétněji: Vyhledávám ID v tabulce tblCtenari. Pokud tam bude, zobrazím formulář Nabídka a do texboxu vypíšu Jméno a Příjmení daného čenáře. Pokud tam nebude, zobrazí se MsgBox s danou informací. Děkuji za jakoukoliv radu. P.S. Omlouvám se pokud jsem dotaz napsal na špatné místo.

Pavel Lasák

Přidáno: 06.01.13 16:32

To Lukáš: Můžete poslat ukázku?

Lukáš

Přidáno: 06.01.13 17:25

Tady je: Private Sub btPrihlaseniPrihlasit_Click() Dim DBS As Database Dim rst As Recordset Set DBS = OpenDatabase(ThisWorkbook.Path & "\Data_Knihovna.mdb") Set rst = DBS.OpenRecordset("tblCtenari", dbOpenDynaset) rst.FindFirst "ID_C = txbPrihlaseniID.value" If rst.NoMatch = True Then MsgBox "Čtenář nebyl nalezen! Prosím zaregistrujte se kliknutím na tlačítko Nový čtenář." Else txbNabidkaJmeno = rst.Fields("Jmeno").Value txbNabidkaPrijmeni = rst.Fields("Prijmeni").Value Nabidka.Show End If rst.Close Set rst = Nothing Set DBS = Nothing End Sub Je mi jasné, že tohle asi fungovat nebude. Předělával jsem to teď z "testovací" verze kdy jsem zkoušel vyhledávat konkrétní údaj přípo napsaný v kódu. I to ale nejde.

Lukáš

Přidáno: 08.01.13 16:41

Jinak bych potřeboval pomoci ještě s jednou věcí: Jde nějak udělat aby mi combobox zobrazoval hodnotu, ale jeho vlastnost Value měla jinou hodnotu? V praxi: Aby mi combobox zobrazoval např. žánr, ale hodnota by byla jeho ID?

Pavel Lasák

Přidáno: 08.01.13 22:38

To Lukáš: Snad pomůže http://www.webermarking.com/images/odbc_settings_excel.pdf nebo http://www.teachexcel.com/excel-help/excel-how-to.php?i=124725

Lukáš

Přidáno: 09.01.13 14:45

Popravdě řečeno ani moc ne, ale děkuji alespoň za snahu. Zkusím to nějak vyřešit. Jinak, ten druhý problém už jsem vyřešil :)

Milan Nehasil

Přidáno: 19.01.13 17:48

Dobrý den, můžete mi prosím poradit ? V souboru data.xlsx zapisuji hodnotu z textového pole pomocí VBA do druhého souboru zaznamy.xlsx pomocí vašeho kódu : [code] Workbooks.Open Filename:="zaznamy.xlsx" For Radek = 1 To 65536 If Cells(Radek, 1) = "" Then PrvniPrazdnyRadek = Radek Exit For End If Next Radek ActiveWorkbook.Worksheets("List1").Cells(PrvniPrazdnyRadek + 1, 1).Value = TextBox1.Text End Sub [/code] šlo by nějak udělat aby se soubor zaznamy.xlsx při zapisování hodnoty nezobrazoval ? Děkuji Milan

Milan Nehasil

Přidáno: 21.01.13 10:27

Proboha co jsem to napsal za blábol. To je tak když text xkrát opravujete a pak si to po sobě nepřečtete. :-). Prosím nereagujte, já jsem našel odpověď na můj zmatený dotaz zde na jiné stránce.

Pavel Lasák

Přidáno: 21.01.13 16:55

To Milan Nehasil: OK.

Libor

Přidáno: 20.02.13 17:57

Potřebuji poradit, mám tabulku ve které je sloupec (F15:F180) s různými údaji např. LVR18, LVR16, HFR16, HFR20, LVRN9 atd. Potřebuji vytvořit makro, ktré by dokázalo spočítat v celém sloupci "F" celkový počet LVR a HFR a výsledek napsat do dvou buněk třeba B1 a B2. Díky za pomoc.

Eddie

Přidáno: 28.03.13 14:35

Měl bych jeden dotaz. V UserForm mám vytvořeno více TextBoxů. Do prvního uživatel vloží čas a do druhého interval a potřebuji vyplnit dalších 30 textboxů časy jak jdou po sobě podle zadaného intervalu. Zatím to mám napsané pro každý textbox samostatně a snažil jsem se to vytvořit pomocí cyklu ale nezjistil jsem jak napsat cyklus tak, aby se při každém opakování změnilo číslo textboxu. Jde to nějakým způsobem, případně jak jinak to vyřešit elegantně vyřešit? Díky za radu

Jakub

Přidáno: 24.04.13 10:45

Dobrý den, potřeboval bych poradit s automatickým filtrem. Mám zamknutý list se seznam a automatickým filtrem (nelze seřazovat, ale filtrovat ano). Pomocí makra je možné přidávat do seznamu na konec nové záznamy. Když je ale pomocí filtru zobrazena jen část seznamu, nový záznam se zapíše na další řádkem pod posledním záznamem filtrovaného seznamu (ikdyž je obsazený). Chtěl jsem zadat podmínku, pokud bude filtr obsahovat určitá kritéria, aby se vynula (ale filtr se nemůže odebrat kvůli zamknutému listu). Nevíte prosím, jak zapsat vynulování kritérií pokud nějaká jsou? Děkuji, Jakub

Dana K.

Přidáno: 05.11.13 11:39

Dobrý den, potřebovala bych pomoct s vytvořením makra. Makra vůbec neumím a potřebuji to do své DP práce pro usnadnění dalších výpočtů. Makro by mělo po spuštění pomocí tlačítka najít max. a min. hodnotu ve vybraném sloupci a následně v rozmezí těchto hodnot po kroku př.0,001 vypsat hodnoty do sloupečku pod sebou. S následným automatickým načtením a spuštěním makra pro výpočet histogramu. Díky Dana

Adam

Přidáno: 12.12.13 14:33

Dobrý den, chtěl bych se zeptat, zdá náhodou někdo nevíte, 1)jak obejít uzamčení (nefunkčnost) kontingenční tabulky ve sdíleným sešitě. Tzn. buď by mi fungovala kont.tabulka nebo rozšířený filtr. 2) mám nějaký VBA formulář a chtěl bych, aby po otevření souboru se otevřel pouze ten formulář (tzn. bez toho, aby na pozadí bylo vidět prostředí excellu, samozřejmě, že jako takový excel by byl někde minimalizovan) Děkují moc Adam

Honza R.

Přidáno: 19.01.14 17:45

Ahoj, potřeboval bych radu. Mám Excel tabulku čítající ca 45000 záznamu (řádku) a stále přidávám. Ve sloupci C mám identifikační čísla která nejdou za sebou (třeba 7051825 a další je až 7192285). Nevím jak mám najít řádek s nejbližší nižší hodnotu oproti té kterou mám v TextBoxu a za něj vložit nový kam se pak vloží data z formuláře. Díky moc Honza

Martin

Přidáno: 26.05.14 15:10

Dobrý den, mohl byste mi prosím poradit script. Mám excel provázaný na dost velké úrovni, jeden list kam se vyplňují data, následně se sčítají, součet jde do dalšího listu, kde toto další sečtené číslo jde opět do jiného listu. Jednitlivé řádky mají označení 1 a 2 mimo sum řádků. Jak mám napsat makro, aby se mi v jednom listu sčítali řádky s 1 nebo 2, které jsou v jiném listu ? Díky moc. Martin

Johny

Přidáno: 09.07.14 15:37

Dobrý den, prosím dokázal by jste mi poradit mám tabulku, kde v horní části jsou přes vzorečky anglické zkratky dnů je to jako kalendář a mění se každý rok, potřebuji přes VBA aby se vždy označil barevně sloupec víkendu. Pokud bude potřeba pro lepší vysvětlení mohu poslat danou tabulku. Mám tohle to,ale nefunguje mi to, někde je chyba. Range("D14:AH" & 17 + Pocet).Select Selection.Interior.ColorIndex = xlNone Mazej Range("C14").Select 'Označení "So" a "Ne" Do ActiveCell.Offset(0, 1).Select If ActiveCell = "celkem" Or ActiveCell = "" Then Range("A1").Select End End If If (Application.WorksheetFunction.Weekday(ActiveCell, 2) = 6) Or (Application.WorksheetFunction.Weekday(ActiveCell, 2) = 7) Then ActiveCell.Offset(0, 0).Select Selection.Offset(RowOffset:=0, ColumnOffset:=0).Resize(Rowsize:=Pocet + 4, columnsize:=1).Select Selection.Interior.ColorIndex = 36 End If Loop End Sub Možná komunikace na mail: johny-n@seznam.cz Moc Vám děkuji za rady Honza

Jojo

Přidáno: 11.07.14 09:26

To Honza R.: cez funkciu POZVYHLEDAT / MATCH. --Kód však bude jednoduchší a rýchlejší, keď sa riadky budú zadávať vždy na koniec záznamov (aj keď identifikačné čísla nebudú zotriedené).

Jojo

Přidáno: 11.07.14 13:34

To Honza R.: (pokračovanie) ... Je však pravda aj to, že v zotriedenom zozname sa cez uvedenú funkciu rýchlejšie hľadá.

Jojo

Přidáno: 22.07.14 07:40

To Johny: Neviem presne čo znamená "horní část", ale podľa pôvodného kódu stačí zadať do 14.riadku dátum + vyplniť vpravo + je možné zmeniť aj Formát buniek/Vlastní/Typ na "ddd" pre zobrazenie dňa v týždni + potom použiť tento mierne upravený kód: -- Sub Oznac_So_Ne() Pocet = 0 Range("D14:AH" & 17 + Pocet).Select Selection.Interior.ColorIndex = xlNone 'Mazej Range("C14").Select 'Označení "So" a "Ne" Do ActiveCell.Offset(0, 1).Select If ActiveCell = "celkem" Or ActiveCell = "" Then Range("A1").Select End End If If (WorksheetFunction.Weekday(ActiveCell, 2) = 6) Or (WorksheetFunction.Weekday(ActiveCell, 2) = 7) Then ActiveCell.Resize(Rowsize:=Pocet + 4, columnsize:=1).Interior.ColorIndex = 36 End If Loop End Sub

Jojo

Přidáno: 22.07.14 08:31

To Martin: nie celkom rozumiem otázke, ale toto by mohlo pomôcť:For sh = 1 To Sheets.Count spolu = WorksheetFunction.Sum(Sheets(sh).Range("A1:C1")) ' súčet na liste v 1 riadku celkom = celkom + spolu Next sh

Ivan

Přidáno: 10.08.14 13:51

Dobrý den, prosím o pomoc s následujícím problémem. Mám několik stránek v listu pod sebou. Každá stránka obsahuje stejné záhlaví a zápatí. Pod záhlavím mám ve dvou řádcích text, který potřebuji mít na každé stránce pod záhlavím. Problém je, že pokud potřebuji zkopírovat z jiného excelu hodnoty do buněk, tak na druhém listu již text pod záhlavím nezůstane a přepíšou se buňky. Dá se to nějak pevně bloknout proti přepsání? Děkuji moc

Vratislav Novák

Přidáno: 26.01.16 15:17

Dobrý den, potřeboval bych poradit jak vypnout potvrzovací hlášku pro stažení souboru pomocí hyperlink viz (For i = 1 To Worksheets("cis_cas").Range("D1").Value strVyslurl = "https://" & strURLbasic & strTypExp & "?" & "z=T&f=TABULKA&ds=&vyhltext=&zo=N&pvo=" & strIDPVO & "&udIdent=&verze=-1&nahled=N&sp=N&nuid=&zs=&skupId=&pvoch=&filtr=G~F_M~F_Z~F_R~F_P~_S~_null_null_&pvokc=&katalog=31032&&c=" & Worksheets("cis_cas").Range("B" & i + 1).Value & "&evo=v57516_!_VUZEMI97-100-101hal-nezj_1&str=v19&kodjaz=203&expPoznData=N&expPoznTexty=A&nasexp=s&kodyklice=N&origurl=https%3A%2F%2Fvdb.czso.cz%2Fvdbvo2%2Ffaces%2Fcs%2Findex.jsf%3Fpage%3Dvystup-objekt%26pvo%3DCIZ01%26zo%3DN%26z%3DT%26f%3DTABULKA%26verze%3D-1%26nahled%3DN%26sp%3DN%26filtr%3DG~F_M~F_Z~F_R~F_P~_S~_null_null_%26katalog%3D31032%26evo%3Dv57516_!_VUZEMI97-100-101hal-nezj_1%26c%3D" & Worksheets("cis_cas").Range("B" & i + 1).Value strCas = Worksheets("cis_cas").Range("B" & i + 1).Value ActiveWorkbook.FollowHyperlink Address:=strVyslurl, NewWindow:=False, AddHistory:=False ActiveWorkbook.SaveAs Filename:=strCesta & strNazevsouboru & strTypExp & "_" & strCas & ".xls", FileFormat:=xlExcel8, CreateBackup:=False ActiveWindow.Close Next i) Samozřejmě mám nastaveno Appl.screenUp = False Appl.displA=False Zkoušel jsem podle microsoftu vypnout pomocí přidání klíče do registru Win, ale to nepomohlo :( Už jsme z toho zoufalý. Zkoušel jsem i Sendkeys tab a enter, ale to mi posouvalo a odentrovalo text v zdrojovém kódu místo odklepnutí hlášky...

Vratislav Novák

Přidáno: 26.01.16 15:25

Moc se omlouvám, nevšiml jsme si poznámky pod komentem :( Tedy znovu a lépe: For i = 1 To Worksheets("cis_cas").Range("D1").Value strVyslurl = "https://" & strURLbasic & strTypExp & "?" & "z=T&f=TABULKA&ds=&vyhltext=&zo=N&pvo=" & strIDPVO & "&udIdent=&verze=-1&nahled=N&sp=N&nuid=&zs=&skupId=&pvoch=&filtr=G~F_M~F_Z~F_R~F_P~_S~_null_null_&pvokc=&katalog=31032&&c=" & Worksheets("cis_cas").Range("B" & i + 1).Value & "&evo=v57516_!_VUZEMI97-100-101hal-nezj_1&str=v19&kodjaz=203&expPoznData=N&expPoznTexty=A&nasexp=s&kodyklice=N&origurl=https%3A%2F%2Fvdb.czso.cz%2Fvdbvo2%2Ffaces%2Fcs%2Findex.jsf%3Fpage%3Dvystup-objekt%26pvo%3DCIZ01%26zo%3DN%26z%3DT%26f%3DTABULKA%26verze%3D-1%26nahled%3DN%26sp%3DN%26filtr%3DG~F_M~F_Z~F_R~F_P~_S~_null_null_%26katalog%3D31032%26evo%3Dv57516_!_VUZEMI97-100-101hal-nezj_1%26c%3D" & Worksheets("cis_cas").Range("B" & i + 1).Value strCas = Worksheets("cis_cas").Range("B" & i + 1).Value ActiveWorkbook.FollowHyperlink Address:=strVyslurl, NewWindow:=False, AddHistory:=False ActiveWorkbook.SaveAs Filename:=strCesta & strNazevsouboru & strTypExp & "_" & strCas & ".xls", FileFormat:=xlExcel8, CreateBackup:=False ActiveWindow.Close Next i

Katka

Přidáno: 23.03.16 12:40

Dobrý den, mám makro, které mi jednoduše přidává upozornění na narozeniny do Outlooku. Já bych ty narozeniny ale potřebovala přidávat do sdíleného kalendáře od kolegy. Přikládám makro a prosím o radu, jak ho změnit. Děkuji Sub Button47_Click() Const olAppointmentItem As Long = 1 Dim OLApp As Object Dim OLNS As Object Dim OLAppointment As Object aCellRow = ActiveCell.Row On Error Resume Next Set OLApp = GetObject(, "Outlook.Application") If OLApp Is Nothing Then Set OLApp = CreateObject("Outlook.Application") On Error GoTo 0 If Not OLApp Is Nothing Then Set OLNS = OLApp.GetNamespace("MAPI") OLNS.Logon Set OLAppointment = OLApp.CreateItem(olAppointmentItem) OLAppointment.Subject = " volat " & Cells(aCellRow, 1).Value & ", " & Cells(aCellRow, 2).Value & " " & Cells(aCellRow, 3).Value & ", " & Cells(aCellRow, 4).Value & " (" & Cells(aCellRow, 5).Value & ") " & Cells(aCellRow, 6).Value OLAppointment.Start = DateAdd("n", 450, Cells(aCellRow, 7).Value) OLAppointment.End = DateAdd("n", 480, Cells(aCellRow, 7).Value) OLAppointment.ReminderMinutesBeforeStart = "15" OLAppointment.Save Set OLAppointment = Nothing Set OLNS = Nothing Set OLApp = Nothing End If End Sub

Katka

Přidáno: 23.03.16 13:10

Ještě abych to upřesnila, tak přidávám ty narozeniny ze seznamu v excelu do Outlooku. Teď jsem ještě našla, že by to makro asi šlo přidat rovnou do Outlooku, ale nevím si s tím rady:-/ Díky

Vašek

Přidáno: 06.11.16 09:33

Dobrý den, mám tabulku na majetek cca za 20 let (cca 3.500 řádků) a když udělám vyřazení tohoto majetku, tak se mi ze sloupce. "A" (majetek) přesune do sloupce "B" (vyřazený majetek) a já bych potřeboval, aby se mi celý či určitá část tohoto řádku kde vznikl vyřazený majetek, přesunul do jiného listu a tam se řádil pod sebou v pořadí, v kterém byl vyřazen. Je to z toho důvodu, abych nemusel jednotlivé řádky ručně kopírovat při vyřazení majetku... Nevím jestli to je vůbec možné. Děkuji za odpověď.

Jojo

Přidáno: 09.11.16 07:40

To Vašek: -- samozrejme je to možné aj cez VBA, ale ja by som radšej použil filtrovanie alebo kontingenčnú tabuľku.







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