Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据动态用户范围绘制图表的步骤_Excel_Vba_Excel Charts - Fatal编程技术网

Excel 根据动态用户范围绘制图表的步骤

Excel 根据动态用户范围绘制图表的步骤,excel,vba,excel-charts,Excel,Vba,Excel Charts,目的是根据列A(X轴)绘制值。用户在单元格G4中选择一个列名,G4的值可以是B,C,C,D。必须根据列名绘制图表 我能够编写下面的代码来选择数据,但是我不能动态地选择数据 Sub Chart() Dim Lastrow As Long Dim TimeAxis As Range Dim Values As Range Dim cht As Object Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row TimeAxis = R

目的是根据
列A
(X轴)绘制值。用户在单元格
G4
中选择一个列名,
G4
的值可以是
B
C
C
D
。必须根据列名绘制图表

我能够编写下面的代码来选择数据,但是我不能动态地选择数据

Sub Chart()

Dim Lastrow As Long
Dim TimeAxis As Range
Dim Values As Range
Dim cht As Object

Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
TimeAxis = Range("A1:A" & Lastrow).Select '<----- X Axis (Static) 
Values = Range("B1:B" & Lastrow).Select  '<----- User selected as per cell G4 (Dynamic)     

'Plot TimeAxis Vs Values

Set cht = ActiveSheet.Shapes.AddChart2
cht.Chart.SetSourceData Source:=rng    '<------ User Range (Dynamic)
cht.Chart.ChartType = xlXYScatterLines

End Sub
子图表()
最后一排一样长
变暗时间轴作为范围
将值设置为范围
作为对象的Dim-cht
Lastrow=ActiveSheet.Cells(Rows.Count,1).End(xlUp).Row

时间轴=范围(“A1:A”&Lastrow)。选择“请注意,行计数变量的类型必须为
Long
,因为Excel的行数超过
Integer
所能处理的行数:
将Lastrow的行数设为Long
。我建议使用VBA,因为
Integer
没有任何好处

必须使用
设置时间轴
(因为范围是对象)并删除
。选择
。也看到 .

最后,
Set
your
rng
否则它是空的,您不能在
Source:=rng
中使用它

所以你最终会得到这样的结果:

Option Explicit

Sub GenerateChart() 'dont use "chart" as procedure name it is a type in VBA and therefore a reserved word
    Dim LastRow As Long
    LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

    Dim TimeAxis As Range
    Set TimeAxis = Range("A2:A" & LastRow) 'X Axis values start at A2!!!

    Dim SelCol As String
    SelCol = ActiveSheet.Range("G4") 'read column name from G4

    Dim Values As Range
    Set Values = Range(SelCol & "1:" & SelCol & LastRow)  '<----- User selected as per cell G4 (Dynamic)

    'Plot TimeAxis Vs Values

    Dim cht As Object
    Set cht = ActiveSheet.Shapes.AddChart2
    cht.Chart.SetSourceData Source:=Values    '<------ User Range (Dynamic)
    cht.Chart.FullSeriesCollection(1).XValues = TimeAxis 'x axis values
    cht.Chart.ChartType = xlXYScatterLines
End Sub
选项显式
Sub-GenerateChart()'不要使用“图表”作为过程名称。它是VBA中的一种类型,因此是保留字
最后一排一样长
LastRow=ActiveSheet.Cells(ActiveSheet.Rows.Count,1).End(xlUp).Row
变暗时间轴作为范围
设置时间轴=范围(“A2:A”&LastRow)”X轴值从A2开始!!!
像线一样暗淡的颜色
SelCol=ActiveSheet.Range(“G4”)从G4读取列名
将值设置为范围

Set Values=Range(SelCol&“1:&SelCol&LastRow)请注意,行计数变量的类型必须为
Long
,因为Excel的行数超过
Integer
可以处理的行数:
Dim LastRow As Long
。我建议使用VBA,因为
Integer
没有任何好处

必须使用
设置时间轴
(因为范围是对象)并删除
。选择
。也看到 .

最后,
Set
your
rng
否则它是空的,您不能在
Source:=rng
中使用它

所以你最终会得到这样的结果:

Option Explicit

Sub GenerateChart() 'dont use "chart" as procedure name it is a type in VBA and therefore a reserved word
    Dim LastRow As Long
    LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row

    Dim TimeAxis As Range
    Set TimeAxis = Range("A2:A" & LastRow) 'X Axis values start at A2!!!

    Dim SelCol As String
    SelCol = ActiveSheet.Range("G4") 'read column name from G4

    Dim Values As Range
    Set Values = Range(SelCol & "1:" & SelCol & LastRow)  '<----- User selected as per cell G4 (Dynamic)

    'Plot TimeAxis Vs Values

    Dim cht As Object
    Set cht = ActiveSheet.Shapes.AddChart2
    cht.Chart.SetSourceData Source:=Values    '<------ User Range (Dynamic)
    cht.Chart.FullSeriesCollection(1).XValues = TimeAxis 'x axis values
    cht.Chart.ChartType = xlXYScatterLines
End Sub
选项显式
Sub-GenerateChart()'不要使用“图表”作为过程名称。它是VBA中的一种类型,因此是保留字
最后一排一样长
LastRow=ActiveSheet.Cells(ActiveSheet.Rows.Count,1).End(xlUp).Row
变暗时间轴作为范围
设置时间轴=范围(“A2:A”&LastRow)”X轴值从A2开始!!!
像线一样暗淡的颜色
SelCol=ActiveSheet.Range(“G4”)从G4读取列名
将值设置为范围

设置值=范围(SelCol和“1:”&SelCol和LastRow)'On line
Set cht=ActiveSheet.Shapes.AddChart2
它给出了以下错误
运行时错误'438':对象不支持此属性或方法
,因此我将该行更改为
Set cht=ActiveSheet.Shapes.AddChart
,但现在它在第
cht.Chart.FullSeriesCollection(1)行显示了相同的错误.XValues=TimeAxis的x轴值
。尝试使用
系列集合(1)
取而代之。在第行
Set cht=ActiveSheet.Shapes.AddChart2
上,它给出了以下错误
运行时错误“438”:对象不支持此属性或方法
因此我将该行更改为
Set cht=ActiveSheet.Shapes.AddChart
,但现在它在第行
cht.Chart.FullSeriesCollection(1)上显示了相同的错误.XValues=TimeAxis的x轴值
。尝试使用
系列集合(1)