Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Potřebujete-li pomocí VBA měnit maximální (minimální hodnotu osy).
Doplněno 14.7.2014
Při práci s grafy je mnohdy potřeba pomocí VBA nastavit příslušné hodnoty na osách. Jako například minimální hodnotu, maximální hodnotu, případně vrátit automatické nastavené rozsahy pro vybranou osu. Jak na to pomocí VBA je představeno v tomto článku.
Předpokládám že upravovat osy v grafem již umíte. Proto dialogové okno Formát osy nemusím představovat. Poze pro připomenutí jak vypadá v Excel 2010.
Článek je rozdělen do následujících kapitol:
Jak na mimimum, využijeme
Axes(xlValue).MinimumScale
Excel přiřadí minimální hodnotu automaticky:
ActiveSheet.ChartObjects("Graf 2").Activate
ActiveChart.Axes(xlValue).MinimumScaleIsAuto = True
Například "2"
ActiveChart.Axes(xlValue).MinimumScale = 2
Požadujete-li číslo s desetinou hodnotou - nezapomenout na tečku (ne čárka)
ActiveSheet.ChartObjects(2).Chart.Axes(xlValue).MinimumScale = 2.2
Zobrazíme například dialogovým oknem:
Dim GrafHodnotaMin As Double
ActiveSheet.ChartObjects("Graf 2").Activate
GrafHodnotaMin = ActiveChart.Axes(xlValue).MinimumScale
MsgBox GrafHodnotaMin
Podobně jako u mimimální hodnoty, pro maximální hodnotu využijeme:
Axes(xlValue).MaximumScale
Excel přiřadí maximální hodnotu automaticky:
ActiveSheet.ChartObjects(2).Chart.Axes(xlValue).MaximumScaleIsAuto = True
Například "5.2"
ActiveSheet.ChartObjects(2).Chart.Axes(xlValue).MaximumScale = 5.2
Dim GrafHodnotaMax As Double
GrafHodnotaMax = ActiveSheet.ChartObjects(2).Chart.Axes(xlValue).MaximumScale
MsgBox GrafHodnotaMax
Příklady pro aktivní graf jehož osu chceme měnit
ActiveChart.Axes(xlValue).MajorUnit = 0.2
ActiveChart.Axes(xlValue).MinorUnit = 0.04
Pro přehlednost přespokládám, že již je vybrán graf, ukázky i s výběrem grafu jsou např. v Minimum osy y
Nastavení automaticky
ActiveChart.Axes(xlValue, xlSecondary).MinimumScaleIsAuto = True
Nastavení automaticky
ActiveChart.Axes(xlValue, xlSecondary).MaximumScaleIsAuto = True
Automatické nastavení hlavní jednotky pro sekundární y-ovou osu
ActiveChart.Axes(xlValue, xlSecondary).MajorUnitIsAuto = True
Automatické nastavení vedlejší jednotky pro sekundární y-ovou osu
ActiveChart.Axes(xlValue, xlSecondary).MinorUnitIsAuto = True
Nastavení maxima a minima pro x osu využijeme:
Axes(xlCategory).MaximumScale
Axes(xlCategory).MinimumScale
ActiveChart.Axes(xlCategory).MinimumScale = 0
ActiveChart.Axes(xlCategory).MaximumScale = 60
Pro nastavení hlavní a vedlejší jednotky pro osu x využijeme:
Axes(xlCategory).MajorUnit = 10
Axes(xlCategory).MinorUnit = 2
ActiveChart.Axes(xlCategory).MajorUnit = 20
ActiveChart.Axes(xlCategory).MinorUnit = 4
Osa y
Axes(xlValue).MaximumScale
Osa y (sekundární)
Axes(xlValue, xlSecondary).MaximumScale
Osa y (sekundární)
Axes(xlValue, xlSecondary).MinimumScale
Osa y (sekundární)
Axes(xlValue, xlSecondary).MinimumScale
Maximální Osa x - automaticky
Axes(xlCategory).MaximumScaleIsAuto = True
Minimální Osa x automaticky
Axes(xlCategory).MinimumScaleIsAuto = True
Maximální Osa y
Axes(xlValue).MaximumScaleIsAuto = True
Maximální Osa y (sekundární)
Axes(xlValue, xlSecondary).MaximumScaleIsAuto = True
Minimální Osa y
Axes(xlValue).MinimumScaleIsAuto = True
Minimální Osa y (sekundární)
Axes(xlValue, xlSecondary).MinimumScaleIsAuto = True
Pokud používate hodnoty s desetinými čísly možná narazíte na problém díky lokalním nastavením (tečka, čárka). Proto bude nutné naformátovat číslo.
OsaMaxHodnota = Format(124.3, "Standard")
Jeli již číslo v proměnné OsaMaxHodnota
OsaMaxHodnota = Format(OsaMaxHodnota, "Standard")
Nejen číslené hodnoty můžete na osách měnit, lze měnit i jejich barvu, značky popisky os. Jak na to jsem zatím sesepsal. Osobně jsem nepotřeboval ani podobný dotaz jsem nezaznamenal. Třeba časem články vytvořím a odkazy sem doplním ;)
Soubor Ukázky jak nastavovat osy pomocí VBA v Excel ke stažení zdarma. Soubor využívá makra.
Další příklady se pokusím doplnit na základě dotazů.
Článek byl aktualizován: 19.09.2020 11:06
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.
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ů.
Přidáno: 11.10.12 11:19
Dobrý deň, každý týždeň pridávam údaj do tabuľky. Chcela by som, aby sa mi graf automaticky natiahol o jednu číslicu ďalej. Napríklad: graf os x: týždeň 1 až 40 pridám údaj pre týždeň 41 graf os x: týždeň 1 až 41. Ďakujem za odpoveď
Přidáno: 11.10.12 16:38
To čerešna: Třeba přes dynamicky definovanou oblast: http://office.lasakovi.com/excel/funkce/dynamicky-definovana-oblast-pro-graf/ nebo přes VBA,
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
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 |