1

こんにちは、グラフを生成するためのコードを書きましたが、正しく動作しています。問題は、生成に時間がかかることです。なぜ時間がかかるのかわかりません。コードは

    Dim cc As Chart

    Set cc = ActiveWorkbook.Charts.Add
    Set cc = cc.Location(Where:=xlLocationAsObject, name:=assume)

    With cc

     .ChartType = xlXYScatterLines

     With .Parent

       .Top = Columns(b).Offset(0, 4).Top
       .Left = Columns(b).Offset(0, 4).Left
       .name = "cc"

     End With

  End With

  Dim sc As Series
  Set sc = cc.SeriesCollection(1)

  With sc
      .Values = Columns(b).Offset(0, -3)
      .XValues = Columns(b).Offset(0, -5)
  End With

誰か助けてください

4

2 に答える 2

1

画面更新をオフにしていませんか?これをコードの先頭に追加します。

Application.ScreenUpdating = False

次に、これをコードの最後に追加します。

Application.ScreenUpdating = True
于 2012-10-17T16:49:31.517 に答える
1

これを試して、列の行を実際のデータでグラフ化するだけです。

Sub makeChart(b As String, assume As String) 'i presupposed these arguments based on your code

Application.ScreenUpdating = False

Dim cc As Chart

Set cc = ActiveWorkbook.Charts.Add
Set cc = cc.Location(Where:=xlLocationAsObject, Name:=assume)

With cc

    .ChartType = xlXYScatterLines

    With .Parent

        .Top = Columns(b).Offset(0, 4).Top
        .Left = Columns(b).Offset(0, 4).Left
        .Name = "cc"

    End With

End With


Dim strValue As String, strXValue As String

'here you are using the passed column letter to find the specific column you want to chart
strValue = Split(Range(b & "1").Offset(, -3).Address, "$")(1) 'will return "C" if given column F
strXValue = Split(Range(b & "1").Offset(, -5).Address, "$")(1) 'will return "A" if given column F

Dim sc As Series
Set sc = cc.SeriesCollection(1)

With sc

    'will select from row 1 to the last true used row in the given column
    .Values = Range(strValue & "1:" & strValue & Range(strValue & Rows.Count).End(xlUp).Row)
    .XValues = Range(strXValue & "1:" & strXValue & Range(strXValue & Rows.Count).End(xlUp).Row)

End With

Application.ScreenUpdating = True

End Sub
于 2012-10-22T13:55:43.533 に答える