2013-04-27 38 views
0

有人會猜測我爲什麼會收到「運行時錯誤5:無效的過程調用或參數?」 圖表工作正常,只是我得到此錯誤,我想要擺脫它。調用圖表過程時出現無效的過程調用錯誤

Option Explicit 
Option Base 1 

Sub dort9() 

Dim cMin As Double 
Dim cMax As Double 
Dim lDer As Long 
Dim NoIntervals As Long 
Dim plaga() As Variant 
Dim i As Long 
Dim J As Long 

Dim dest As Range 
Dim A As Integer 
Dim B As Integer 
Dim rColumn() As Variant 
Dim result() As Variant 
ReDim result(1 To 4) 
ReDim result2(1 To 4) 


NoIntervals = 4 
ReDim Preserve plaga(14) 

    With Worksheets("Sheet1") 
     plaga = .Range(.Cells(1, 1), .Cells(14, 1)).Value 
    End With 

Call tri1(plaga) 

cMin = WorksheetFunction.Min(plaga) 
cMax = WorksheetFunction.Max(plaga) 

Dim longInter As Double 
longInter = (cMax - cMin)/NoIntervals 

ReDim plaga2(1 To NoIntervals) As Long 
ReDim arrIntervals(1 To NoIntervals) 

Dim pla As Variant 
Dim lCom As Long 
Dim res As Variant 

    For i = 1 To NoIntervals 
     arrIntervals(i) = cMax - ((i - 1) * longInter) 
    Next i 

    For Each pla In plaga 
     res = Application.Match(pla, arrIntervals, -1) 
     plaga2(res) = plaga2(res) + 1 
    Next pla 


    result(1) = plaga2(1) 

    For B = 2 To 4 
     result(B) = (plaga2(B) + result(B - 1)) 
    Next B 

    For A = 1 To 4 
     result2(A) = WorksheetFunction.Round((result(A)/14) * 100, 2) & " %" 
    Next A 

    Set dest = Worksheets("Sheet1").Range("D1") 
    dest.Resize(4, 1).Value = Application.Transpose(result2) 
    Call ChartNew2(result2) 

End Sub 

它有它調用圖表上從數組...第一次調用程序是無關緊要的,它工作正常繪製值的最後一次通話過程中。

Sub ChartNew2(result2 As Variant) 
Dim i As Integer 
ReDim result2(1 To 4, 1 To 1) 
Charts.Add 

    For i = LBound(result2, 1) To UBound(result2, 1) 
     result2(i, 1) = result2 
    Next i 
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers 
    ActiveChart.Location Where:=xlLocationAsObject 

    With ActiveChart 
      .HasTitle = True 
      .Axes(xlValue, xlPrimary).HasTitle = True 
    End With 


    With ActiveChart.Axes(xlValue) 
       .HasMajorGridlines = True 
    End With 

    ActiveChart.HasLegend = False 
    ActiveChart.PlotArea.Select 

    Selection.Interior.ColorIndex = xlAutomatic 
    ActiveChart.Axes(xlValue).Select 

    With ActiveChart.Axes(xlValue) 

      .MaximumScale = 1 

    End With 

End Sub 
+0

您將需要從'ChartNew2()' – 2013-04-27 07:11:51

+0

發佈相關的代碼,在那裏聲明'result2'變量以及哪種方式?嘗試在「call」行之前停止過程,而不是使用F8鍵進行調試。你知道數組'result2'似乎是用ZERO打包的... – 2013-04-27 08:33:37

回答

0

定位方法'其中'參數和'名稱'參數。 如果Where等於'xlLocationAsObject',那麼Name是必需的。所以你必須指定名稱來定位方法調用。

Sub ChartNew2() 

    ' Creates a new chart sheet and returns a Chart object 
    Dim newChart As Variant 
    Set newChart = ActiveWorkbook.Charts.Add 

    With newChart 
     ' Name is required if Where is xlLocationAsObject 
     .Location Where:=xlLocationAsObject, Name:="Sheet1" 
     ' ... 
    End With 
End Sub