Stránka 1 z 1

VBA - dotaz na jednoduché makro

Napsal: 20 dub 2015 15:31
od jerry1989
Dobrý den,
hezky prosím, můžete mi říct, proč mi makro níže, napíše do aktivního listu (list1) Ahoj!!! do buňky A1, místo toho, aby to udělal pro všechny listy mimo ty tři vyjmenované? - netuším kde je chyba - na netu jsem našel stejné makro s tím, že funguje. Dělám něco špatně? nebo je tam opravdu chyba?

Dim ws As Worksheet

For Each ws In Worksheets
If ws.Name <> "List1" And ws.Name <> "List2" And ws.Name <> "Pomocný" Then
Range("A1") = "Ahoj!!!"
End If
Next ws

Do těla cyklu potřebuju napsat složitější funkce ale zatím zápasím s výběrem listů, děkuji předem za odpověď.

Re: VBA - dotaz na jednoduché makro

Napsal: 20 dub 2015 17:49
od atari
Protože příkaz Range("A1") = "Ahoj!!!" zapisuje jen do aktivního listu, a aktivní list je v tomto případě pouze ten, který máš otevřený. Takže si zadej příkaz ws.Select, který při splnění podmínky zaktivní požadovaný list.

Poznámka: Doporučuji přečíst pravidla diskuze, a kody vkládat pres "Code" a kompletní, pokud nejsou dlouhé. Usnadníš práci těm, kterří Ti chtějí pomoci.

Kód: Vybrat vše

Sub Makro1()
Dim ws As Worksheet
For Each ws In Worksheets
    If ws.Name <> "List1" And ws.Name <> "List2" And ws.Name <> "Pomocný" Then
    ws.Select
    Range("A1") = "Ahoj!!!"
    End If
Next ws
End Sub

Re: VBA - dotaz na jednoduché makro

Napsal: 20 dub 2015 23:32
od guest
ws.Select? Šmarjá panno, kdo vás ty Selecty učí? Co vám říká Parent, co třeba ws.Range("A1")?

Re: VBA - dotaz na jednoduché makro

Napsal: 21 dub 2015 08:53
od atari
Učí nás to sám velkej Bill :lol: . Jsem samouk, a začínal jsem studiem prostřednictvím záznamníku maker v Excelu. Ten často využívá metodu Select. A také jsem se to naučil na těchto stránkách http://office.lasakovi.com/.

Metodu Select jsem hodně používal, když jsem vybral například list, a na listu jsem pak prováděl mnoho operací, takže mi to pak ušetřilo trochu kódu. Samozřejmě u tohoto příkladu, kdy se provádí jedna operace, to je naopak. A navíc při použití metody Select, mě pro začátečníka, který se učil VBA, byl ten kód pro pochopení, jak VBA pracuje, srozumitelnější. Pokud je kód rozdělený do více kroků, tak to začátečník rychleji vnímá, alespoň u mě to tak fungovalo.

Ve VBA píšu občas něco jednou za rok, takže co se přitom naučím, zase ak zase během roku z toho něco zapomenu, a umím jen základy. My co "vyrostli" na DOSu bez myši (ti starší zde vědí o čem píšu) to máme s učením strukturovaných jazyků složitější.

Jinak děkuji za zjednodušení, to ws.Range("A1") mě v tu chvíli nenapadlo, jinak bych to napsal taky.

Re: VBA - dotaz na jednoduché makro  Vyřešeno

Napsal: 21 dub 2015 09:26
od jerry1989
Děkuji mnohokrát, trošku mě mrzí že jsem na to nepřišel sám. Momentálně se učím podobnou metodou - nahrávám a snažím se porozumět.
Co se týče metody "select", myslím že ve svých makrech bych našel mnohem více zvěrstev, ale prozatím mě stačí, že makro dělá co má. Ještě jednou děkuji.