Сина,
Я не уверен, что именно ваша проблема, но в этой строке:
ActiveChart.SeriesCollection(1).XValues = "='Sheet3'!$12:$12"
вы указываете строку 12 для построения. Вместо! $ 12: $ 12 вы можете иметь! $ C $ 12: $ L $ 12, которая будет устанавливать диапазон от C3 до L12. Если вы хотите установить строку динамически, вы можете использовать:
Set mcStartX = Worksheets(1).Cells(12, 3)
startColX = mcStartX.Address()
//we assume that in cell C3 we have specified number of cells to be plotted
toAdd = Cells(3, 3).Value
Set mcEndX = Worksheets().Cells(12, 2 + toAdd)
endColX = mcEndX.Address()
Используя этот код и предполагая, что у вас есть 10 в C3, вы получите $ C $ 12 от startColX и $ L $ 12 от endColX. Остальное просто, вы можете использовать следующий код:
ActiveChart.SeriesCollection(1).XValues = "='Sheet3'!" + startColX + ":" + endColX
Я надеюсь, что это может быть полезно.
Приветствия