Использование переменных вместо имен столбцов или номеров - PullRequest
0 голосов
/ 04 марта 2011

Я пытаюсь нарисовать диаграмму в Excel, и вот мой код

ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'ResultHL'!$E:$E")
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Values = "='ResultHL'!$CB$1:$CB$2520"

Это работает нормально, но я бы не хотел знать, могу ли я присвоить имена или номера столбцов некоторым переменным и использовать их в приведенном выше коде.

В строке 2 -> ActiveChart.SetSourceData Source:=Range("'ResultHL'!$E:$E") мне нужно присвоить E переменной и использовать ее

также в строке 5 мне нужно использовать целочисленную переменную вместо 2520

Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 04 марта 2011

Я считаю, что гораздо проще использовать свойства Cells и / или Resize, чем увязать во всей этой грязной конкатенации строк.

Пример:

Dim rngApples As Range
Dim shtResults As Worksheet
Dim lngMaxRow As Long

shtResults = Worksheets("Sheet1")

' Define the range you want to plot
lngMaxRow = 2520
rngApples = shtResults.Range("CB1").Resize(lngMaxRow, 1)

ActiveChart.SeriesCollection(2).Values = rngApples 

Кроме того, вы можете определить свой диапазон следующим образом:

lngColNum = 56 ' or whatever CB is
lngMaxRow = 2520
rngApples = shtResults.Range(Cells(1, lngColNum), Cells(lngMaxRow, lngColNum))
1 голос
/ 04 марта 2011

Спецификаторы ячейки и диапазона - это просто строки, так что вы можете объединить их со строками или числами для ссылки на нужные ячейки.

For example:
ActiveChart.SetSourceData Source:=Range("'ResultHL'!$E:$E")
Could become
ActiveChart.SetSourceData Source:=Range("'ResultHL'!$" & ColumnName & ":$" & ColumnName)
Where ColumnName is the string value of the column you wish to use. 

И

ActiveChart.SeriesCollection(2).Values = "='ResultHL'!$CB$1:$CB$2520"
Could become
ActiveChart.SeriesCollection(2).Values = "='ResultHL'!$CB$1:$CB$" & MaxRowNumber
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...