Получить последнюю ячейку с данными в столбце в Excel 2007

Я пытаюсь написать макрос для создания графиков в Excel 2007. Я не знаю, сколько ячеек будет в диапазоне для одной из серий данных (оно может быть где-то от 50 до 1000). Я погуглил и нашел ответы, но они разбросаны по всей карте, а те немногие, что я пробовал, мне совсем не помогли.

Я новичок в макросах vba, но я опытный программист.

Я нашел такие примеры, как:

Sub FindLast2()
    x = ActiveSheet.UsedRange.Rows.Count
    ActiveCell.SpecialCells(xlLastCell).Select
End Sub

Я не уверен, работает ли это, и если это работает, как я могу включить это в свой макрос

Вот мой макрос в его нынешнем виде:

Sub temp_graph_5()
'
' temp_graph_5 Macro
'

'
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(2).Select
    Sheets(2).Name = "Temperature"
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets(1). _
        Range("B2:B324")
    ActiveChart.SeriesCollection(1).Name = "=""Temperature"""

End Sub

«B324» — это секция, в которой мне нужно быть переменной.

Любая помощь приветствуется.


person Patrick    schedule 10.12.2010    source источник
comment
Здесь есть несколько идей: stackoverflow.com/questions/71180/   -  person Fionnuala    schedule 11.12.2010


Ответы (2)


Этот код может помочь достичь того, что вам нужно:

 Sub temp_graph_5()
    Dim myRng As Range
    Dim lastCell As Long

    //Get range to be plotted in chart
    lastCell = Worksheets(1).Range("B2").End(xlDown).Row
    Set myRng = Worksheets(1).Range("B2:B" & lastCell) 

    //Add worksheet and name as "Temperature"
    Dim newSheet As Worksheet

    Set newSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    newSheet.Name = "Temperature"
    newSheet.Select

    //Add a new chart in Temperature and plot values from sheet 1
    Charts.Add

    With ActiveChart
        .ChartType = xlLine
        .SetSourceData Source:=myRng, PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:="Temperature"
    End With

End Sub
person Alex P    schedule 11.12.2010
comment
большое спасибо! Знаете ли вы какие-нибудь хорошие места для учебников по макросам vba? - person Patrick; 12.12.2010

person    schedule
comment
Это было бы нормально для pre-xl'07. xl'07 содержит более 65536 строк. Один из популярных способов: last_row_all = cells(rows.count,"A")end(xlup).row убедитесь, что вы dim last_row_all as long - person Davesexcel; 30.10.2015