2010-12-10 48 views
0

J'essaie d'écrire une macro pour créer des graphiques dans Excel 2007. Je ne connais pas le nombre de cellules qui seront dans la gamme pour l'une des séries de données (Il pourrait être de 50 à 1000). J'ai googlé ceci et j'ai trouvé des réponses mais elles sont partout sur la carte et les quelques que j'ai essayées ne m'ont pas aidé du tout. Je suis novice chez vba macros mais je suis un programmeur expérimenté.Obtenir la dernière cellule avec des données dans la colonne dans Excel 2007

que j'ai trouvé des exemples tels que:

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

Je ne suis pas sûr si cela fonctionne & si cela ne fonctionne comment pourrais-je intégrer cela dans ma macro

Voici ma macro tel qu'il est maintenant:

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 

La 'B324' est la section dont j'ai besoin pour être variable.

Toute aide est grandement appréciée.

+0

Il y a quelques idées ici: http://stackoverflow.com/questions/71180/how-can-i-find-last -row-that-contains-data-dans-le-excel-feuille-avec-une-macro – Fionnuala

Répondre

2

Ce code peut aider à réaliser ce dont vous avez besoin:

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 
+0

merci beaucoup! Connaissez-vous des bons endroits pour les tutoriels pour les macros vba? – Patrick

+2

Si vous voulez apprendre les macros VBA à un niveau de compétence, je suggère d'acheter un livre (voir ce post -> http://stackoverflow.com/questions/404824/). Google est votre ami lors du dépannage des problèmes VBA et certains sites que j'ai trouvé utiles sont -> www.ozgrid.com/www.contextures.com/www.dailydoseofexcel.com –

0
sub test() 
last_row_all = Range("A65536").End(xlUp).Row 
msgbox last_row 
end sub 
+0

Ce serait ok pour pré-xl'07. xl'07 a plus de 65536 lignes. Une méthode populaire est 'last_row_all = cells (rows.count," A ") end (xlup) .row' Assurez-vous de ' dim last_row_all aussi longtemps ' – Davesexcel