この問題については、すでに Web で検索しましたが、うまくいきませんでした。私は Excel 14.0 を使用しています。VBA をチャート作成に使用するのは嫌いですが、選択の余地はありません。文字通り何十ものチャートを時折更新する必要があります。Excel では、ソース データ範囲の検索置換など、これを行う簡単な方法が提供されていません。
多分私はVBAには洗練されすぎています。限界があることはわかっていますが、問題なく常にオブジェクトを渡します。これが私がやろうとしていることです。十分に単純に思えます。SeriesCollection オブジェクトを渡すことができないようです。ByRef、ByVal を試してみると、どちらも Type Mismatch エラーが発生します。With/End With ブロックなしでも試してみました。また、エラーが発生したのは SeriesCollection 引数であることも確認しました。チャート オブジェクトと seriescollection の整数を渡すだけでよいと思いますが、変数が多すぎます。
Sub mcrMyCode1()
With ActiveChart
Call mcrSeriesMod(.SeriesCollection(1), "HD", "HO", "Avg", 34, 57)
End With
End Sub
Sub mcrMyCode2()
Call mcrSeriesMod(ActiveChart.SeriesCollection(1), "HD", "HO", "Avg", 34, 57)
End Sub
Sub mcrModSeries(ByRef SeriesMod As SeriesCollection, _
ByVal sStCol As String, _
ByVal sEndCol As String, _
ByVal sTitle As String, _
ByVal iXRow As Integer, _
ByVal iYRow As Integer)
With SeriesMod
.XValues = "=Sheet1!$" & sStCol & "$" & iXRow & ":$" & sEndCol & "$" & iXRow
.Values = "=Sheet1!$" & sStCol & "$" & iYRow & ":$" & sEndCol & "$" & iYRow
.Name = sTitle
End With
End Sub