0

次のコードがあります

Sub Foo()
    Dim Graph As Chart
    Set Graph = AddGraph()
    Graph.name = "XXXX"
End Sub

Function AddGraph() As Chart
    Dim Graph As Chart
    '
    '
    '
    Graph.name = "XXXX"
    Set AddGraph = Graph
End Function

(「名前」を小文字にするのは VBE であることに注意してください。)

AddGraph では、Graph を で作成しName="ChartXX"ます。割り当てステートメントは名前を変更しません。

Foo では、名前割り当てステートメントが実行されると、呼び出しスタックの一番上まで制御がキックされます。(グラフのその他の操作は問題ありません。)

だから私は2つの質問があります:

1 ) 名前の変更が AddGraph で機能しないのはなぜですか? と

2 ) 名前の変更が後で Foo でクラッシュするのはなぜですか?

4

2 に答える 2

2

AddGraph() がどのようにチャートを追加するか、またはどのような種類のチャートを追加するかを教えてくれませんでした。ケータリングの責任者は、グラフ シートを追加したと想定しています。この場合、Graph.Name は有効なプロパティです。ただし、グラフを埋め込みグラフとして追加した場合、Graph.Name は無意味です。代わりに、Graph の親である ChartObject の名前を設定する必要があります。

Graph.Parent.Name = "XXXX"

于 2012-06-12T11:32:46.193 に答える
0

問題は、グラフが作成中のチャート オブジェクトに正しく設定されていないことが原因のようです。

これを試して:

Option Explicit

Sub Foo()
    Dim Graph As Chart
    Set Graph = AddGraph()
    Graph.Name = "MMMMMMM"
End Sub

Function AddGraph() As Chart
    Charts.Add
    With ActiveChart
        .ChartType = xlXYScatterLines
        .SetSourceData Source:=Sheets("Sheet1").Range("A1:B5")
        .Name = "XXXX"
    End With
    Set AddGraph = ActiveChart
End Function

それをステップ実行すると、チャートが関数内で「XXXX」という名前になり、サブに戻ると「MMMMMM」という名前に変更されることがわかります。

于 2012-06-05T23:54:35.000 に答える