2017-02-27 13 views
1

私は新しいVBAユーザーです。シリーズ名に基づいてチャートシリーズの書式を設定しようとしています。私は、シリーズ名を参照し、定義されたMarkerStyle、MarkerForegroundColor、MarkerSizeなどを返すためにvlookupを使用したいと思います。私はそれぞれがユニークなマーカーを必要とするシリーズ名の大きなリストを持っているので、多数のチャート。私は、コードを始めたが、1004エラーを取得維持している:「WorksheetFunctionクラスのVLOOKUPプロパティを取得できません」:Excel VBA Varchupを使用したチャートシリーズの書式設定

Sub ChartFormattingVlookup() 
    Dim mySeries As Series 
    Dim cht As ChartObject 
    Dim vbc As Range 
    Set vbc = Worksheets("VBAChartFormat").Range("A2:I44") 

    For Each cht In ActiveSheet.ChartObjects 
     cht.Activate 
     For Each mySeries In ActiveChart.SeriesCollection 
      With mySeries 
       .MarkerSize = Application.WorksheetFunction.VLookup(mySeries, vbc, 7, False) 
       .MarkerStyle = Application.WorksheetFunction.VLookup(mySeries, vbc, 6, False) 
      End With 
     Next mySeries 
    Next cht 
End Sub 

私は任意のヘルプや提案をいただければと思います。ありがとう!あなたはVLookup機能にエラーが出ている理由@Scottホルツマンの

+3

vlookupの第1引数の 'mySeries'配置が正しくありません。引数は範囲参照またはリテラル文字列を期待しており、直列コレクションオブジェクトを渡しています。 'mySeries.Name'を渡すと、ルックアップテーブルのシリーズ名が –

答えて

0

続いアップがコメント、ちょうどFor Each mySeries In cht.SeriesCollectionを使用cht、その後ActiveChartを使うActivateする必要もありません。

さらに、エラーの可能性のある障害をApplication.WorksheetFunction.VLookupに追加することを検討する必要があります。

Option Explicit 

Sub ChartFormattingVlookup() 

    Dim mySeries As Series 
    Dim cht As ChartObject 
    Dim vbc As Range 

    Set vbc = Worksheets("VBAChartFormat").Range("A2:I44") 

    For Each cht In ActiveSheet.ChartObjects 
     For Each mySeries In cht.SeriesCollection 
      With mySeries 
       If Not IsError(Application.VLookup(mySeries.Name, vbc, 7, False)) Then '<-- check VLookup was successfull 
        .MarkerSize = Application.VLookup(mySeries.Name, vbc, 7, False) 
       End If 
       If Not IsError(Application.VLookup(mySeries.Name, vbc, 6, False)) Then '<-- check VLookup was successfull 
        .MarkerSize = Application.VLookup(mySeries.Name, vbc, 6, False) 
       End If 
      End With 
     Next mySeries 
    Next cht 

End Sub 
+0

であれば動作します。これは素晴らしいことですが、あなたのコメントをありがとうございます。スコット、もし私のシリーズ名が文字列ではなく整数であれば? –

+0

@FrankSまだ動作するはずですね。 –

+0

遅れて申し訳ありません。あなたはそれが大丈夫ですよ、ありがとう! –

関連する問題