2012-11-13 7 views
6

Ich habe für die Benennung der Serie in einem Graph VBA-Code geschrieben:Wie finden Sie den Seriennamen mit VBA?

ActiveChart.SeriesCollection(1).name = "SPEC" 
ActiveChart.SeriesCollection(2).name = "manju" 

Mein Problem ist, dass ich die besondere Serie Namen VBA-Code finden möge. In dem obigen Code habe ich zwei Serien. Jetzt möchte ich den Seriennamen (Manju) mit VBA-Code finden.

+0

Gibt es einen Grund, warum 'MsgBox (ActiveChart.SeriesCollection (2) .name)' nicht funktionieren würde? –

+0

@lynn bröckelnd danke –

+0

@LynnCrumbling Ich möchte alle Serien suchen, weil jedes Mal wird es unterschiedliche Position –

Antwort

9

Um die SeriesCollection() durch den Namen zugreifen vorbei können Sie:

MsgBox ActiveChart.SeriesCollection("manju").Name 

das möglich ist, weil index im SeriesCollection(index) tatsächlich von Variant Typ ist so der Compiler funktioniert, wenn Sie einen String Typ sind vorbei und versuchen, Zugang es mit dem Namen oder wenn Sie eine Long/Integer (oder einen anderen numerischen Datentyp) passieren, um den Enumerator zugreifen.

oder die Series iterieren, um den aktuellen Namen gegen "Manju" zu vergleichen:

For i = 1 to ActiveChart.SeriesCollection.Count 
    If ActiveChart.SeriesCollection(i).name = "manju" Then 
     MsgBox "Found it!" 
     Exit for 
    End if 
Next 
+0

Lynn, bedeutet dies, dass Sie nicht auf die Serie mit Namen zugreifen können ? – rrs

+3

@rrs Korrigieren - weder die '.Item()' Methode noch der Indexer unterstützen eine Zeichenkette ... nur eine Indexnummer. –

+1

Für Office 2007 (ich habe nicht in früheren Versionen überprüft), können Sie definitiv auf die 'SeriesCollection' über ihren Namen zugreifen. Ie 'ActiveChart.SeriesCollection (" manju ")'. Siehe Office 2010-Dokumentation hier, wo es heißt: http://msdn.microsoft.com/en-us/library/office/ff836171%28v=office.14%29.aspx – CuberChase