使用另一个工作表导入的数据构build图表会显示错误1004

我有这个macros来build立一个图表,获取错误1004时,在一张表中填充从不同的工作表导入的数据。 当我使用完全相同的表格,但在当前表格中手动创build时,它工作正常。 这是我的代码。 我可以帮忙吗?

Sub MacroChart() 'Copy data from "Sheet1" to Sheet2 'Copying column by column because I read somewhere that it may solve the problem. 'Unfortunatly, not. n = 3 While Worksheets("Sheet1").Cells(n, 1) <> "" n = n + 1 Wend n = n - 1 'I need to skip column B from1 = "A3:A" & n from2 = "C3:C" & n from3 = "D3:D" & n from4 = "E3:E" & n from5 = "F3:F" & n n = n - 2 to1 = "A1:A" & n to2 = "B1:B" & n to3 = "C1:C" & n to4 = "D1:D" & n to5 = "E1:E" & n 'The current table will have 5 columns and 54 lines, all cells filled With Worksheets("Sheet2") .Range(to1).Value = Worksheets("Sheet1").Range(from1).Value .Range(to2).Value = Worksheets("Sheet1").Range(from2).Value .Range(to3).Value = Worksheets("Sheet1").Range(from3).Value .Range(to4).Value = Worksheets("Sheet1").Range(from4).Value .Range(to5).Value = Worksheets("Sheet1").Range(from5).Value End With area = "$A$1:$E$" & n 'Creating the chart 'The code stops on line "FullSeriesCollection(2).ChartType..." ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select ActiveChart.SetSourceData Source:=Worksheets("Sheet2").Range(area) ActiveChart.FullSeriesCollection(1).ChartType = xlColumnClustered ActiveChart.FullSeriesCollection(1).AxisGroup = 1 ActiveChart.FullSeriesCollection(2).ChartType = xlColumnClustered ActiveChart.FullSeriesCollection(2).AxisGroup = 1 ActiveChart.FullSeriesCollection(3).ChartType = xlLine ActiveChart.FullSeriesCollection(3).AxisGroup = 1 End Sub 

您需要在.Item()之后使用.Item() ,并且有一个更简单的方法来计算最后一行:

 Sub MacroChart() Dim n As Long, _ wS1 As Worksheet, _ ws2 As Worksheet, _ Area As String, _ cH As Chart, _ Sh as Shape 'Copy data from "Sheet1" to Sheet2 'Copying column by column because I read somewhere that it may solve the problem. 'Unfortunatly, not. Set wS1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") n = wS1.Range("A" & wS1.Rows.Count).End(xlUp).Row 'I need to skip column B from1 = "A3:A" & n from2 = "C3:C" & n from3 = "D3:D" & n from4 = "E3:E" & n from5 = "F3:F" & n n = n - 2 to1 = "A1:A" & n to2 = "B1:B" & n to3 = "C1:C" & n to4 = "D1:D" & n to5 = "E1:E" & n 'The current table will have 5 columns and 54 lines, all cells filled With ws2 .Range(to1).Value = wS1.Range(from1).Value .Range(to2).Value = wS1.Range(from2).Value .Range(to3).Value = wS1.Range(from3).Value .Range(to4).Value = wS1.Range(from4).Value .Range(to5).Value = wS1.Range(from5).Value End With Area = "$A$1:$E$" & n 'Creating the chart 'The code stops on line "FullSeriesCollection(2).ChartType..." Set Sh = ws2.Shapes.AddChart2(201, xlColumnClustered) Set cH = Sh.Chart With cH .SetSourceData Source:=w2.Range(Area) .FullSeriesCollection.Item(1).ChartType = xlColumnClustered .FullSeriesCollection.Item(1).AxisGroup = 1 .FullSeriesCollection.Item(2).ChartType = xlColumnClustered .FullSeriesCollection.Item(2).AxisGroup = 1 .FullSeriesCollection.Item(3).ChartType = xlLine .FullSeriesCollection.Item(3).AxisGroup = 1 End With End Sub