1

これはバグだと確信していますが、何かが足りないのかもしれません。

したがって、(すべての線が表示された) 等高線図が必要です。

編集:わかりました、画像を投稿しようとしましたが、これは新しいアカウントのせいで投稿できません..しかし、あなたはその考えを理解します

そのためには、データのテーブルを作成してから、次のコードを実行する必要があります。

Sub test()
    Charts.Add
    ActiveChart.charttype = xlSurface
    test2
End Sub
Sub test2()
Dim a
    For Each a In ActiveChart.Legend.LegendEntries
        a.LegendKey.Format.Line.Visible = msoTrue
        a.LegendKey.Format.Line.ForeColor.RGB = RGB(0, 0, 0)
        ActiveChart.Refresh
    Next a
End Sub

ただし、実行するtest()と、グラフは表示されますが、線は表示されません (これが Excel のデフォルトです)。I THEN をtest2もう一度実行すると、行がいっぱいになります。もちろん、これはまったく意味がありません。

私は決して初心者ではありません (個人アカウントでいくつかの質問に答えるのを手伝いましたが、職場でのアクセスがブロックされています)。DoEvents代わりに試してみましActiveChart.Refreshたが、サイコロはありません。また、Excel 2010 (自宅でこれを最初に試した場所) でも適切に動作すると確信しているため、これは 2007 年のバグのようです。どなたかお願いします。

4

1 に答える 1

0

返信に時間がかかって申し訳ありませんが、VMでExcel 2007を起動しようとしましたが、VMで問題が発生しているようです。そのため、Excel 2007でこのコードをテストしていませんが、動作するはずです。

これが、私が常に「Active-Something」を使用しないことを提案している理由です。ActiveCell、などです。常に変数を宣言してからActiveSheetActiveworkbook変数を操作してください。あなたは決して間違って行くことはありません。この例を参照してください

Sub test()
    Dim objChrt As ChartObject

    Set objChrt = ActiveSheet.ChartObjects.Add _
    (Left:=50, Width:=200, Top:=50, Height:=200)

    With objChrt
        .Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:C5")
        .Chart.ChartType = xlSurface
        test2 .Chart
    End With
End Sub

Sub test2(chrt As Chart)
    Dim a
    For Each a In chrt.Legend.LegendEntries
        a.LegendKey.Format.Line.Visible = msoTrue
        a.LegendKey.Format.Line.ForeColor.RGB = RGB(0, 0, 0)
        chrt.Refresh
    Next a
End Sub
于 2012-08-13T05:23:50.460 に答える