VBA Makro - udělej graf na každém listu z dat daného listu Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

jerry1989
nováček
Příspěvky: 4
Registrován: březen 15
Pohlaví: Nespecifikováno
Stav:
Offline

VBA Makro - udělej graf na každém listu z dat daného listu

Příspěvekod jerry1989 » 26 bře 2015 15:14

Ahoj,
snažím se pracovat s makry a VBA v excelu 2010 a nedaří se mi přijít na jednu věc:
jak ve VBA napsat aby určité makro, např. vytvoření grafu z buněk rozsahu B1:D1, toto udělalo na každém listě z dat na daném listě?
Kód jako takový psát neumím - vykrádám různá fóra a stránky, popřípadě nahrávám makra a půjčuji si příkazy zase odtud - prostě se teprve učím.
Toto používám pro vytvoření grafu na aktivním listě:

Sub UdelejGraf()

' UdelejGraf Makro

Range("B1:D1").Select

ActiveSheet.Shapes.AddChart.Select

ActiveChart.ChartType = xlColumnClustered

ActiveChart.SetSourceData Source:=Range("$B$1:$D$2")

End sub


Potřeboval bych docílit toho aby toto provedl na každém listě z dat daného listu - pokud jako rozsah napíši:

For Each WorkSheet In Worksheets

Range("B1:D1").Select

atd..


udělá mi to graf za každý list na aktivní list z dat aktivního listu - spousta stejných grafů na aktivním listě (počet grafů = počet listů).
hezky prosím - věděl by někdo jak napsat mnou požadované makro resp. rozsah "udělej na každém listě z buněk daného listu"?

Předem děkuji za odpověď.
Jarda

Reklama
cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: VBA Makro - udělej graf na každém listu z dat daného lis

Příspěvekod cmuch » 26 bře 2015 17:25

Vítej na PC-Help

Lze třeba takto

Kód: Vybrat vše

Sub AddChartObjectSheetsWorkbook()
 Dim sh As Worksheet

 For Each sh In Worksheets
    With sh.ChartObjects.Add _
            (Left:=100, Width:=375, Top:=75, Height:=225)
        .Chart.SetSourceData Source:=sh.Range("B1:D2")
        .Chart.ChartType = xlColumnClustered 'xlXYScatterLines
    End With
 Next
   
End Sub

jerry1989
nováček
Příspěvky: 4
Registrován: březen 15
Pohlaví: Nespecifikováno
Stav:
Offline

Re: VBA Makro - udělej graf na každém listu z dat daného lis

Příspěvekod jerry1989 » 27 bře 2015 08:32

Super! děkuji moc, funguje:-)
Takže pokud to chápu správně určení rozsahu "dělej na všech listech" je opravdu:
For Each sh In Worksheets (chápu i že na začátku byla definovaná zkratka pro Worksheet)
určení použití dat (v tomto případě přidání grafu) daného listu je zřejmě toto: With sh.ChartObjects.Add _ pak následuje definice jak má graf vypadat..
Mám ještě otázku ohledně toho jak určit s čím má na listě pracovat (už jsem zkoušel znásilnit řádek výše ale neúspěšně - neznám použitelné příkazy):
Co kdybych chtěl napsat makro, které na každém listě provede předem stanovenou úpravu - např. vlož řádek mezi první a druhý,následně do buněk (A2,B2,C2) tohoto vloženého řádku napiš vzorce buňkaA2 = B3*C3, buňkaB2 = B3/C3 atd.
Jde mi čistě o to co se ve VBA objeví za řádek místo: "With sh.ChartObjects.Add _ ".
Popř. kde bych se tyto věci mohl dozvědět aniž bych s tím otravoval na forku? je někde nějaká pěkná nápověda/příručka - už jsem trochu googlil ale nic dostatečně jednoduchého jsem nenašel.

cmuch
Level 4.5
Level 4.5
Příspěvky: 1544
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: VBA Makro - udělej graf na každém listu z dat daného lis  Vyřešeno

Příspěvekod cmuch » 01 dub 2015 19:50

Takže pokud to chápu správně určení rozsahu "dělej na všech listech" je opravdu:
For Each sh In Worksheets (chápu i že na začátku byla definovaná zkratka pro Worksheet)

-Ano
určení použití dat (v tomto případě přidání grafu) daného listu je zřejmě toto: With sh.ChartObjects.Add _ pak následuje definice jak má graf vypadat..
-Ano

Mám ještě otázku ohledně toho jak určit s čím má na listě pracovat (už jsem zkoušel znásilnit řádek výše ale neúspěšně - neznám použitelné příkazy):
Co kdybych chtěl napsat makro, které na každém listě provede předem stanovenou úpravu - např. vlož řádek mezi první a druhý

-

Kód: Vybrat vše

Rows("2:2").Insert Shift:=xlDown

,následně do buněk (A2,B2,C2) tohoto vloženého řádku napiš vzorce buňkaA2 = B3*C3, buňkaB2 = B3/C3 atd.
- zkus použít záznamník a koukni na netu
Popř. kde bych se tyto věci mohl dozvědět aniž bych s tím otravoval na forku? je někde nějaká pěkná nápověda/příručka - už jsem trochu googlil ale nic dostatečně jednoduchého jsem nenašel.
- Koupit nějakou knížku o VBA,
- jinak hledat na netu, popřípadě něco najdeš vysvětlené tu (http://www.excelplus.net, http://office.lasakovi.com/excel/...


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Excel - automatický export listů xls do pdf včetně pojmenování Příloha(y)
    od kalosek » 28 čer 2023 20:31 » v Kancelářské balíky
    2
    2069
    od kalosek Zobrazit poslední příspěvek
    29 čer 2023 19:39
  • "Ještě chvilku" po téměř každém zapnutí
    od Asanoth » 24 črc 2023 13:08 » v BSOD (Blue Screen Of Death)
    10
    9075
    od Karrex Zobrazit poslední příspěvek
    10 srp 2023 12:45
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1126
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Graf v Excelu ukazuje chybné hodnoty. Příloha(y)
    od atari » dnes, 08:42 » v Kancelářské balíky
    4
    100
    od atari Zobrazit poslední příspěvek
    dnes, 13:28

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti