VBA 运行-时间1004错误
VBA run-time 1004 error
我在 VBA 上遇到 运行 次 1004 错误。我知道问题出在哪里,但我就是找不到解决办法。
我使用的是 Microsoft Excel 2013
样本数据如下:
1 01/19/2015 40 0.250006538
52 0.052997791
58 0.010990106
2 01/20/2015 40 0.250001126
52 0.052997369
58 0.010990412
3 01/21/2015 40 0.250005088
52 0.052996605
58 0.010990819
它一直在继续。我打算做的是提取特定数字旁边的数据值(例如,对于 40,它将是 0.250006538、0.250001126、0.250005088 等)并将它们绘制在图表上。
到目前为止我所做的是将范围合并在一起:
'checks for number 40
For each c In rng1.Cells
Set cellRange = Range("D" & c.Row)
Set cCell1 = Union(cCell1, cellRange)
Next
我也试过这个方法:
'checks for number 40
For each c In rng1.Cells
If Not s = vbNullString Then
s = s & "," & Range("D" & c.Row).address
Else
s = Range("D" & c.Row).address
End If
Next
我将得到的最终结果是带有地址列表的 cCell1 变量或 s 变量。
$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2
问题是当我尝试用
在图表上绘制图形时
ActiveChart.SeriesCollection(1).Values = Range(cCell1.address)
或
ActiveChart.SeriesCollection(1).Values = Range(s)
它停止并给我一个运行时间错误“1004”。
我假设发生这种情况是因为变量中的地址太长而无法由 Range 函数处理...我正在使用的数据表有成百上千的数据,必须绘制图表根据点数。
有什么解决方法吗?非常感谢!
这对我有用...
Sub Tester()
Dim c As Range, cTot As Range, s As Series
'collect all values for "40"
For Each c In Range("D1:D27").Cells
If c.Offset(0, -1) = 40 Then
If cTot Is Nothing Then
Set cTot = c
Else
Set cTot = Application.Union(cTot, c)
End If
End If
Next c
'create new series
Set s = ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries()
s.Values = cTot 'set values
End Sub
我在 VBA 上遇到 运行 次 1004 错误。我知道问题出在哪里,但我就是找不到解决办法。
我使用的是 Microsoft Excel 2013
样本数据如下:
1 01/19/2015 40 0.250006538
52 0.052997791
58 0.010990106
2 01/20/2015 40 0.250001126
52 0.052997369
58 0.010990412
3 01/21/2015 40 0.250005088
52 0.052996605
58 0.010990819
它一直在继续。我打算做的是提取特定数字旁边的数据值(例如,对于 40,它将是 0.250006538、0.250001126、0.250005088 等)并将它们绘制在图表上。
到目前为止我所做的是将范围合并在一起:
'checks for number 40
For each c In rng1.Cells
Set cellRange = Range("D" & c.Row)
Set cCell1 = Union(cCell1, cellRange)
Next
我也试过这个方法:
'checks for number 40
For each c In rng1.Cells
If Not s = vbNullString Then
s = s & "," & Range("D" & c.Row).address
Else
s = Range("D" & c.Row).address
End If
Next
我将得到的最终结果是带有地址列表的 cCell1 变量或 s 变量。
$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2,$D5,$D8,$D1,$D4,$D7,$D0,$D3,$D6,$D9,$D2
问题是当我尝试用
在图表上绘制图形时 ActiveChart.SeriesCollection(1).Values = Range(cCell1.address)
或
ActiveChart.SeriesCollection(1).Values = Range(s)
它停止并给我一个运行时间错误“1004”。
我假设发生这种情况是因为变量中的地址太长而无法由 Range 函数处理...我正在使用的数据表有成百上千的数据,必须绘制图表根据点数。
有什么解决方法吗?非常感谢!
这对我有用...
Sub Tester()
Dim c As Range, cTot As Range, s As Series
'collect all values for "40"
For Each c In Range("D1:D27").Cells
If c.Offset(0, -1) = 40 Then
If cTot Is Nothing Then
Set cTot = c
Else
Set cTot = Application.Union(cTot, c)
End If
End If
Next c
'create new series
Set s = ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries()
s.Values = cTot 'set values
End Sub