Stránka 1 z 1

Makro pro více listů

Napsal: 02 bře 2011 19:20
od cmuch
Ahoj,
potřeboval bych radu jestli lze udělat nějaké makro, které když upravím se projeví na více listech najednou.

Např:
Mám 12 listů označených 01...12 a na 01 udělám makro že se sečtou data v sloupcích B a C a výsledek bude na D a ten se zkopíruje na G
a pro ostatní listy to musím v VBA ručně zkopírovat pro všech 12 listů.
Ale když pak potřebuji ještě v 01 něco poupravit tak zas musím vše ručně upravovat.

Ale kdyby bylo něco čím bych to upravil v jednom listě a to se zároveň udělalo i v dalších.

Děkuji za pomoc

Re: Makro pro více listů

Napsal: 02 bře 2011 19:54
od mike007
Vítej na PC-help.

Proč tak složitě? Napiš si makro, které ti najednou upraví všechny záložky ...


Kód: Vybrat vše

Sub makro()
Dim ws As Worksheet
For Each ws In Worksheets
....
Next
End Sub


případně si další záložky provzorečkuj

Re: Makro pro více listů

Napsal: 03 bře 2011 16:02
od cmuch
Ahoj,
dík za přivítání.
Ale asi jsem to nepochopil :?

Tak přikládám soubor kde je k ukázce mé makro - modul 2 a to z předcozího příspěvku - modul 1

Dík

Re: Makro pro více listů

Napsal: 03 bře 2011 17:01
od navstevnik
Pokud nejsou ve sloupci AT2:AT333 potrebne vzorce, potom procedura muze vyadat takto (ve standardnim modulu, modifikuj dle potreby):

Kód: Vybrat vše

Option Explicit

Sub makro()
  Dim Wsht As Worksheet, Blk As Range, Cll As Range
  ' pro vsechny listy mimo list prehled
  For Each Wsht In ThisWorkbook.Worksheets
    If Wsht.Name <> "prehled" Then
      With Wsht
        ' vlozit a formatovat hlavicku sloupce
        With .Range("AT1")
          .Value = "souctik"
          With .Font
            .Name = "Arial"
            .Bold = True
            .Size = 10
          End With
        End With
        ' definovat blok souctu
        Set Blk = Wsht.Range("at2:at333")
        ' secit dvojice bunek ATxx = AKxx + AMxx
        For Each Cll In Blk.Cells
          With Cll
            .Value = .Offset(0, -9).Value + .Offset(0, -7).Value
          End With
        Next Cll
        ' prekopirovat sloupec A:A > AS:AS
        .Range("as:as").Value = .Range("a:a").Value
      End With
    End If
  Next
End Sub

Re: Makro pro více listů

Napsal: 03 bře 2011 17:24
od cmuch
To je úplně ono :D
Díky moc.

Ale ještě jedna malá otázečka, když přidám nový list jak ho vyřadím z toho makra tak jako "prehled"?
Nějak se mi to nedaří :-(

Re: Makro pro více listů

Napsal: 03 bře 2011 18:00
od navstevnik
V procedure uprav radek na tvar:
If Wsht.Name <> "prehled" And Wsht.Name <> "jmenolistu" Then

Re: Makro pro více listů  Vyřešeno

Napsal: 03 bře 2011 18:05
od cmuch
Dík moc. :bigups:

Já tam dával znaky jak ve vzorcích a tak, ale dát tam zase "Wsht.Name <>" to mě nenapadlo.