Y a-t-il un moyen d'ajouter une étiquette de callout à un point dans un tableau, sans utiliser Enregistrement d'une macro, j'ai obtenu ceci: p> Sélectionner code>?
Sub Macro9()
ActiveSheet.ChartObjects("SPC").Activate
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).Points(4).Select
ActiveChart.SetElement (msoElementDataLabelCallout)
End Sub
4 Réponses :
Essayez le code ci-dessous
Sub Macro9() ActiveSheet.ChartObjects("SPC").Activate ActiveChart.SeriesCollection(1).Points(4).HasDataLabel = True ActiveChart.SeriesCollection(1).Points(4).DataLabel.Text = "Point 4 Test" End Sub
Avez-vous essayé cet outil gratuit http://www.appspro.com/uties/chartlabeler. HTM de Rob Bovey? P>
Il existe une option "label manuel" qui semble être très proche de ce que vous voulez. J'utilise la version de 1996-97 qui a visible Code VBA. Je n'ai pas vérifié si la dernière version a. p>
Je peux confirmer que vous pouvez afficher le code VBA car il est visible dans le fichier de téléchargement du lien fourni.
Comme je l'ai dit dans un commentaire: Je ne pouvais pas trouver un moyen de le faire directement mais je pensais pouvoir y travailler.
s'avère que j'étais échoué! p>
Mais couvrons une affaire de bord qui, pour certaines utilisations, aura une solution assez facile; disons que vous n'avez pas besoin de datatalabels sauf em> pour les instances où vous souhaitez callout: p> pour quiconque désespéré, le plus proche que je suis venu était de créer un Superposition à l'aide du tableau d'origine en tant que modèle. Cependant, cela ne fonctionne pas avec précision pour les graphiques arbitraires, en raison de problèmes de positionnement avec la boîte de callout. P> Mais à ce stade, vous pouvez aussi bien avoir juste ajouté une zone de texte ou quelque chose de beaucoup moins impliqué que de copier un Graphique, supprimer la moitié de son contenu et en faire le reste invisible ... P> Mais pour le bien de cthul - je veux dire, science: p> Et le résultat: Datatalabels intacts avec seulement 1 point ayant des calloutes. P> < img src = "https://i.stack.imgur.com/7x8xy.png" alt = "Entrez la description de l'image ici"> p> p>
On dirait vraiment bien, et c'était une lecture intéressante à travers votre code, déterminez comment vous avez fait des choses. Cependant, je crains que, au moment où la solution de Siddhart ressemble à la meilleure, il semble donc probable qu'il aura la prime. Vous a donné un uppot cependant: p
Pas un problème - c'est vraiment une meilleure solution. Je n'en étais pas vraiment pour la prime. J'ai reconnu votre nom de quand je l'ai lancé pour la première fois, et vous avez une grande aide sur quoi à l'époque était un projet difficile pour moi (et probablement un peu de sujet aussi). Depuis lors, j'avais beaucoup fermé avec VBA, alors j'ai pensé que je peux au moins offrir des efforts!
Est-ce ce que vous essayez? Dans le code ci-dessous, nous avons évité N'hésitez pas à jouer avec Capture d'écran strong> p> .activate / .select code> complètement :)
.AutoshapeType code> propriété. Vous pouvez également formater l'étiquette de données pour afficher les valeurs dans n'importe quel format que vous souhaitez. P>
Cela semble vraiment proche, et cela m'a également appris qu'une étiquette de callout est une sorte de datalabel - pour une raison quelconque, j'ai eu l'impression d'avoir deux objets distincts: p
Ne cherche pas à être possible, la fonction
.setellement code> ne peut pas être appliquée sur le point code> objet code> pour une raison quelconque. Vous pouvez définir à peu près toutes les autres propriétés code> datatalabel code> mais pas la propriété de callout sans sélectionner.
NEWLIND, un
article code>
retourne Un objet de la série, qui n'est pas un Objet Points . Mais je pense que vous pouvez utiliser un élément sur un objet Points. Est-ce que cela prendra un paramètrecode>?
Vous souhaitez ajouter un callout à seulement 1 point (ou un nombre donné de points, mais pas tous les points)?
@vegard Un nombre donné de points, mais pas tous des points. Sur un tableau arbitraire.
Je ne trouve aucune façon directe i> façon de le faire ... mais si vous n'êtes pas opposé à un code sale, il devrait être possible de travailler autour de lui. C'est une quantité relativement importante de code pour une telle entreprise "petite" entreprise, mais si vous êtes déterminé à éviter
SELECT CODE>, nous pouvons ajouter une série invisible avec un seul point sur le dessus de l'existant (dans le Graphique), ce qui signifie que vous pouvez faire
setelement code> sur cette série particulière.
Dans ce cas, je pense que je préférerais utiliser quelque chose de plus proche de la méthode décrite dans la question initiale, car je suis préoccupé par l'ajout d'une série supplémentaire pour chaque callout fliger rapidement la taille du graphique. Cependant, je vous encourage à poster votre solution avec une petite explication dans la section Réponses, car elle serait techniquement une réponse correcte à ma question et donc éligible à la prime. @Vegard
Une autre question - le graphique doit-il avoir des datalabels en général? C'est-à-dire que vous avez besoin de datalabels sur les points qui ne sont pas censés avoir des callants?
@Vegard Il y a un Datatalabel sur l'un des points du graphique actuellement, oui.