Comment supprimer une série à partir d'un tableau Excel à l'aide de VBA

Je suis en train de supprimer le vide de la série à partir d'un graphique dans Excel 2003 à l'aide de VBA. J'ai vu que d'autres personnes ont eu ce problème dans le passé et j'ai essayé toutes les méthodes mentionnées dans leurs postes, mais ont été incapables de trouver quelque chose qui fonctionne toujours.

Le tableau a 14 de la série en elle et n'importe où entre 3 ou 9 d'entre eux peut être vide. Les vides sont toujours entre les Séries 4 - 12.

J'ai essayé quelques variantes de code mais c'est avant tout cela:

Sheets("chart-1").Select
ActiveChart.PlotArea.Select
For i = 12 To 4 Step -1
    Dim theSeries As Series
    MsgBox (ActiveChart.SeriesCollection(i).Name)
    Set theSeries = ActiveChart.SeriesCollection(i)
    MsgBox (theSeries.Name)
    theSeries.Delete
Next

Je peux l'exécuter avec succès une fois pour un graphique, mais tous les cycles subséquents échouer avec un Unable to get the Name property of the Series class erreur. Il échoue sur l'appel .Nom.

J'ai été en mesure de le faire fonctionner en insérant des entiers directement, mais il sera exécuté qu'une fois pour tous les entiers sauf 1. Il l'exécuter plusieurs fois pour Series(1).

Par exemple, si je appelez simplement: ActiveChart.SeriesCollection, (1).Supprimer, puis la série est supprimé, mais si je puis l'exécuter avec un autre entier (4, 9, 12) il ne s'exécute pas. Il fonctionnera de nouveau pour 1, mais 1 seul. Il permettra également de travailler encore une fois avec d'autres nombres entiers (4), mais tous les appels suivants seront l'échec, même si je change le nombre entier de 1 ou conserver comme 4, soit de le changer pour un autre nombre.

Le comportement est vraiment très étrange.

Toutes les idées seraient grandement appréciés. Je ne peux pas simplement appeler ActiveChart.SeriesCollection(1).Delete à plusieurs reprises parce que les 3 premiers de la série sont toujours non vide.

Grâce.

** Mise à jour **

J'ai juste couru un test manuellement en exécutant la commande suivante:

Sheets("ch-v2-12mth").Select
ActiveChart.PlotArea.Select
MsgBox (ActiveChart.SeriesCollection(1).Name)

J'ai pédalé à travers le SeriesCollection, essayer les nombres de 1 à 16 (il y a seulement 14 de la Série dans le tableau) pour voir le résultat.
1 - 3 a bien fonctionné
4 - 13 erronées avec Unable to get the Name property of the Series class
14 a bien fonctionné
15 - 16 erronées avec Method 'SeriesCollection' of object '_Chart' failed < n'est pas surprenant étant donné le nombre de série dans le tableau.

Ce type de comportement me fait penser qu'il y a un bug avec Excel. D'autres idées?

Est-ce que vous cherchez? stackoverflow.com/questions/7875326/...
essentiellement, oui, c'est ce que j'essaie, sans avoir les étiquettes de données. J'ai mis à jour la demande initiale avec les résultats d'autres tests que j'ai fait. Les résultats sont assez bizarre. Merci pour votre aide, mais je suis toujours d'obtenir le même comportement et les erreurs. D'autres idées?
Pouvez-vous opload un exemple de fichier excel afin que je puisse jouer un peu avec elle? De cette façon, je n'auront pas à créer un fichier d'exemple. Vous pouvez télécharger le fichier wikisend.com et puis de partager le lien ici.
Je viens de tester le code que vous avez posté, et il a fonctionné très bien.
Que faire si vous reconstruire votre carte dans un nouveau classeur, puis exécutez de nouveau le code?

OriginalL'auteur getting-there | 2012-08-09