Stránka 1 z 1

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

Napsal: 26 bře 2015 15:14
od jerry1989
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

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

Napsal: 26 bře 2015 17:25
od cmuch
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

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

Napsal: 27 bře 2015 08:32
od jerry1989
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.

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

Napsal: 01 dub 2015 19:50
od cmuch
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/...