使用macros在Excel vba中绘制数据时select数据的第一列到最后一列

我正在编译一些工作中运行的testing数据,我希望从第一列到表单最后一列有一个macrosselect数据。 问题在于,input的每个文件的列数可能不同,所以我需要查找最后一列。

这是我目前使用的。

Columns("A:A").Select Range(Selection, Selection.End(xlToRight)).Select ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SetSourceData Source:=Range( _ "'" & fileType & "'!$A$1:$H$" & CStr(LastRowColH)) 

fileType是文件的名称,它可以很好地发现它,但是当Excel自动放置在$ A $ 1:$ H $范围内时会出现问题。 我希望它从A列到最后一列有数据。 该行的最后一部分,即CStr(LastRowColH))是我能够find的最接近的东西,可以find某个东西的最后部分。 如果只有一个CStr(LastColRow1))代码来获取最后一列,而不是最后一行。

否则有没有办法可以设置$ A $ 1:$ H $部分等于活动select?

任何帮助,将不胜感激!

谢谢

源数据和图表是否在不同的工作表或不同的工作簿中? 从你发布的代码中不太清楚。

 Dim c As Range, sht As Worksheet, cht As Chart Set sht = ActiveSheet 'assuming a regular block of data starting in A1 Set c = sht.Cells(1, Columns.Count).End(xlToLeft) Set c = sht.Cells(Rows.Count, c.Column).End(xlUp) Set cht = sht.Shapes.AddChart().Chart cht.ChartType = xlXYScatterSmoothNoMarkers cht.SetSourceData Source:=sht.Range(sht.Range("A1"), c) 

编辑 :或更简单只是:

 Set cht = sht.Shapes.AddChart().Chart cht.ChartType = xlXYScatterSmoothNoMarkers cht.SetSourceData Source:=sht.Range("A1").CurrentRegion 

这里有几个简单的方法来做到这一点。 他们都假定有规律的数据安排。

选定的范围

 Sub PlotUsingSelectedRange() Dim rng As Range If TypeName(Selection) = "Range" Then Set rng = Selection With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlXYScatter .SetSourceData rng End With End If End Sub 

包含活动单元的数据区域

 Sub PlotUsingActiveCellCurrentRegion() Dim rng As Range If TypeName(Selection) = "Range" Then Set rng = ActiveCell.CurrentRegion With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlXYScatter .SetSourceData rng End With End If End Sub 

ActiveSheet的使用范围

 Sub PlotUsingActiveSheetUsedRange() Dim rng As Range If ActiveSheet.UsedRange.Cells.Count > 0 Then Set rng = ActiveSheet.UsedRange With ActiveSheet.Shapes.AddChart.Chart .ChartType = xlXYScatter .SetSourceData rng End With End If End Sub