VBA légende et le redimensionnement de la zone de traçage
J'ai un tableau Excel qui change sur les sélections effectuées dans les segments.
J'ai remarqué que la zone de traçage et de la légende de changement de zone en fonction de la sélection faite.
J'ai essayé de corriger la position et la taille de la zone de traçage à l'aide de vba, mais cela ne fonctionne tout simplement pas malheureusement.
De la zone de traçage et de la légende de garder sur le redimensionnement, provoquant la légende de chevauchement de la zone de traçage. Ce qui évidemment je ne veux pas.
J'ai ce code, placé dans la feuille de calcul à la page de l'éditeur vba:
Option Explicit
Private Sub Chart_Calculate()
ChartObjects("grafiek 4").Activate
ActiveChart.PlotArea.Width = 637.783
ActiveChart.Legend.Left = 716.514
ActiveChart.Legend.Width = 176.735
ActiveChart.Legend.Height = 295.334
End Sub
avoir ce code, j'ai pris le redimensionnement automatique serait allé, mais j'ai vu la légende est parfois encore te chevauche la zone de traçage.
Est-il une solution en permanence résout ce problème?
Edit1:
Hier, j'ai simplement ajouté un peu de paramètres pour la zone de traçage. Il semblait fonctionner ensuite. Mais maintenant, j'ai essayé de nouveau, et la légende est le chevauchement de la zone de traçage de nouveau.
J'ai changé le code pour:
Option Explicit
Private Sub Chart_Calculate()
ChartObjects("grafiek 4").Activate
ActiveChart.PlotArea.Top = 33.102
ActiveChart.PlotArea.Left = 67.1
ActiveChart.PlotArea.Width = 637.783
ActiveChart.Legend.Top = 7
ActiveChart.Legend.Left = 716.514
ActiveChart.Legend.Width = 176.735
ActiveChart.Legend.Height = 329.667
End Sub
Donc avec 2 plus paramétrée pour la zone de traçage.
edit2:
J'ai vérifié les propriétés de la légende dans Excel. sous options de la légende "il y a une case à cocher" afficher la légende, sans chevauchement de la zone de traçage (je ne sais pas exactement un texte en anglais).
Cette case est cochée, mais elle ne se chevauchent la zone de traçage.
Pourquoi est-il impossible à atteindre? Ayant fixé la taille de la zone de traçage et de la légende ne doit pas être si dur.
edit 3:
J'ai cette routine maintenant dans mon classeur:
Option Explicit
Private Sub Chart_Calculate()
ChartObjects("grafiek 4").Activate
With ActiveChart
With .PlotArea
.Top = 33.102
.Left = 67.1
.Width = 637.783
End With
With .Legend
.IncludeInLayout = True
.Position = xlLegendPositionRight
.AutoScaleFont = False
.Font.Size = 8
.Top = 5
.Left = 706.899
.Width = 179.735
.Height = 336.681
End With
End With
End Sub
Sub kopieergrafiek()
ActiveSheet.ChartObjects("Grafiek 4").Copy
End Sub
(y compris la suggestion dans les commentaires ci dessous mon post)
Je ne semble pas fonctionner. Ne worksheet_change événement peut-être fonctionne le mieux?
edit 4:
Je n'ai toujours pas de solution pour ce problème. C'est déjà le cas lorsque le nom de 1 des éléments de la légende, c'est long pour s'adapter à l'espace. Et il arrive aussi quand il y a de nombreux éléments dans la légende pour s'adapter à l'espace disponible.
Je pense qu'il n'y a pas de solution pour ce. À moins que je pourrait en quelque sorte dire à excel afin de maximiser le nombre d'éléments dans la légende. ou pour maximiser la longueur du nom de la série.
ActiveChart.Legend.IncludeInLayout = True
et puis définissez la position comme ceci: ActiveChart.Legend.Position = xlLegendPositionRight
OriginalL'auteur DutchArjo | 2014-10-28
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème moi-même avec la légende du redimensionnement de la zone de traçage. J'ai essayé ce que Portland Coureur suggéré, le seul paramètre .La légende.IncludeInLayout à false (donc de séparer la légende de la zone de traçage, comme il l'a affirmé, il a peut-être fait une faute de frappe?) et de ma zone de traçage n'était plus de taille.
J'ai simplement changé mon code vba. J'ai ajouté un nouveau variabel qui est maintenant utilisé dans mon pivot pour afficher les articles, mais maintenant avec un nom plus court. Tous les éléments de cet variabel maintenant avoir un nom qui n'a plus de 60 caractères. C'était la chose la plus facile pour moi de le faire pour obtenir le résultat que je veux. Le code utilise simplement =gauche( RC, 60) pour créer le nom plus court et après cela, toutes les formules sont stockés sous forme de valeurs avec range().value = range().valeur
étrange, j'ai aussi couru Portlands deux lignes de code à l'encontre de chaque graphique et ils sont maintenant se comporter c'est à dire les légendes ne sont pas superposer les graphiques lorsque le nombre d'entrées dans la légende des changements
OriginalL'auteur inkyvoyd