2015-01-09 7 views
0

Я работаю над скриптом для построения 300 графиков в excel. В «Рабочем листе» данные сортируются по имени. Список имен указан в «Мастер-листе». Сценарии VBA новы для меня, но у меня есть этот сценарий из разных вопросов в Интернете. Я хотел бы установить связь между диапазоном графа и оператором выбора. Не могли бы вы мне помочь?Макрос VBA для выбора диапазона создания графика

Sub Startup() 

    Sheets("Worksheet").Select 
    ' Find the last row of data 
    FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 
    ' Loop through each row 
    For x = 2 To FinalRow 
     ' Decide if to select based on column A 
     ThisValue = Sheets("worksheet").Cells(x, 1).Value 
     ' SinglePath Configuration 
     If ThisValue = Sheets("Master Sheet").Range("B" & 2) Then 
      Sheets("worksheet").Range("A" & x, "C" & x).Select 
     End If 
     'Loop te create the SetSourceData selection for graph 
    Next x 

    Worksheet.Shapes.AddChart.Select 
    ActiveChart.ChartType = xlXYScatterLinesNoMarkers 
    ActiveChart.SetSourceData Source:=Range(Seclection) 'is selection a correct statement? 
    ActiveChart.PlotArea.Select 
    ActiveChart.Location Where:=xlLocationAsNewSheet 
    ws.Select 

End Sub 
+0

Я не уверен, что вы здесь задаете ... не могли бы вы уточнить, что вы хотите делать, что вы пробовали и что не работает? – laylarenee

ответ

0

Ваш код, как это не будет работать ... например:

  • вам нужно создать диаграммы внутри цикла. Ваш код график приходит после того, как цикл закончен
  • у вас есть неправильно прописано Selection
  • у вас есть паразитные переменные (например, ws в конце)

обновленный код

Код ниже должен быть в соответствии с тем, что вам нужно.

Если ваши условия выполнены, диапазон (1rng1) подается на диаграмму, составляющую sub, эта подпозиция автоматически позиционирует каждый символ t в отклоняющихся положениях вниз по листу, где находятся данные (с использованием переменной lngCnt).

Sub Startup() 
Dim ws As Worksheet 
Dim lngRow As Long 
Dim lngCnt As Long 

Application.ScreenUpdating = False 

Set ws = Sheets("Worksheet") 
' Find the last row of data 
lngRow = ws.Cells(Rows.Count, 1).End(xlUp).Row 
' Loop through each row 
For lngCnt = 2 To lngRow 
' Decide if to select based on column A 
    ThisValue = Sheets("worksheet").Cells(lngCnt, 1).Value 
' SinglePath Configuration 
    If ThisValue = Sheets("Master Sheet").Range("B" & 2) Then Call MakeChart(Range("A" & lngCnt, "C" & lngCnt), lngCnt) 
'Loop te create the SetSourceData selection for graph 
Next lngCnt 

Application.ScreenUpdating = True 
End Sub 

Sub MakeChart(rng1 As Range, ByVal lngCnt) 
Dim ch As ChartObject 
Set ch = ActiveSheet.ChartObjects.Add(200, (lngCnt - 1) * 100, 250, 150) 
With ch 
    .Chart.ChartType = xlXYScatterLinesNoMarkers 
    .Chart.SetSourceData rng1 
End With 
End Sub 
Смежные вопросы