1

我正在从工作中运行的一些测试中编译一堆数据,我希望有一个宏选择数据,从第一列一直到工作表的最后一列。问题是输入的每个文件的列数可能不同,因此我需要在绘制图表时查找最后一列。

这是我目前使用的。

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)),是我能找到的最接近找到某物最后一部分的代码的东西。如果只有一个 CStr(LastColRow1)) 代码来获取最后一列而不是最后一行。

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

任何帮助,将不胜感激!

谢谢

4

2 回答 2

1

源数据和图表是否位于不同的工作表或不同的工作簿中?从您发布的代码中并不是很清楚。

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
于 2013-11-08T23:03:30.400 回答
0

这里有一些简单的方法来做到这一点。他们都假设有规律的数据排列。

选定范围

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
于 2015-07-10T17:04:25.180 回答