Chyba 1004 při provádění změn položek legendy v grafu v Excelu

Příznaky

Při spuštění makra jazyka Microsoft Visual Basic for Applications (VBA), které používá metodu LegendEntries k provedení změn položek legendy v grafu aplikace Microsoft Excel, může se zobrazit následující chybová zpráva:

Chyba 1004 za běhu: Chyba definovaná aplikací nebo objektem

Příčina

K tomuto chování dochází, když graf aplikace Excel obsahuje více položek legendy, než je k dispozici místo pro zobrazení položek legendy v grafu aplikace Excel. Dojde-li k tomuto chování, aplikace Microsoft Excel může zkrátit položky legendy.

Protože Metoda LegendEntries v makrech jazyka VBA používá to, co se zobrazí pro legendu (v tomto případě zkrácené položky legendy), chybová zpráva, která je uvedena v části "Příznaky" tohoto článku se objeví, když je k dispozici více položek, než je k dispozici místo pro zobrazení položek legendy v excelovém grafu.

Řešení

Společnost Microsoft poskytuje příklady programování pouze pro ilustraci, bez záruky vyjádřené nebo předpokládané, včetně, ale bez omezení, předpokládaných záruk obchodovatelnosti a/nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.

Další informace o dostupných možnostech podpory a o tom, jak kontaktovat společnost Microsoft, naleznete na následujícím webu společnosti Microsoft:

https://support.microsoft.com

Chcete-li toto chování obejít, vytvořte makro, které zmenší velikost písma textu legendy grafu aplikace Excel předtím, než makro VBA provede změny legendy grafu, a pak obnoví velikost písma legendy grafu, aby byla podobná následujícímu příkladu makra.

Poznámka

Aby toto makro fungovalo správně, musíte mít na listu excelový graf.

Sub ResizeLegendEntries()

With Worksheets("Sheet1").ChartObjects(1).Activate
      ' Store the current font size
      fntSZ = ActiveChart.Legend.Font.Size

'Temporarily change the font size.
      ActiveChart.Legend.Font.Size = 2

'Place your LegendEntries macro code here to make
         'the changes that you want to the chart legend.

' Restore the font size.
      ActiveChart.Legend.Font.Size = fntSZ
   End With

End Sub