1

こんにちは、Excel の散布図でプロットされたポイントにラベルを追加したいのですが、マクロが更新されるたびにグラフのデータ セット範囲が変更されます...最初の質問は、追加のデータ範囲を設定する方法はありますか-VBAの「Chart Hover Label」の下のようなものですか?

マクロを記録しても何も起こりませんでした (私の指は最初から交差していました)。

これは私が知っている他のチャートアドインのリストです。私が知っていることから、プロットされたポイントにカーソルを合わせたときにラベルのみを表示できるのはそのうちの1つだけです.ポイントのクリック時のデータ範囲。

これは、ホバー上でのみ表示できるようにするアドインです: http://www.tushar-mehta.com/excel/software/chart_hover_label/index.html

これらは私が知っている他の2つです: http://www.appspro.com/Utilities/ChartLabeler.htm http://spreadsheetpage.com/index.php/file/j_walk_chart_tools_add_in/

より多くのオプションを提供する Excel 用の他のグラフ アドイン (できれば無料) を知っている人はいますか? VBA経由で更新できますか?

助けてくれてありがとう。

4

1 に答える 1

2

アドインについてはわかりませんが、チャートの相互作用を使用してVBAで多くのことを実行できます。チャートシートを挿入し、VBAのそのシートに以下のコードを入力するだけです。

これが私の作業グラフの例です。シリーズをクリックすると、テキストボックスが作成され、以下のコードで更新されたセルにテキストが入力されます。シリーズ名だけですが、さらに機能を追加することができます。

Private Sub Chart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim ElementID As Long, Arg1 As Long, Arg2 As Long
Dim chart_data As Variant, chart_label As Variant
Dim last_bar As Long, chrt As Chart
Dim ser As Series, Txt As String

On Error Resume Next 'Sorry for this line of code, I haven't had the chance to look into why it was needed.

Me.GetChartElement x, y, ElementID, Arg1, Arg2

Set chrt = ActiveChart
Set ser = ActiveChart.SeriesCollection(1)
chart_data = ser.Values
chart_label = ser.XValues

Set txtbox = ActiveSheet.Shapes("hover") 'I suspect in the error statement is needed for this.

If ElementID = xlSeries Then

    txtbox.Delete

        Sheet1.Range("Ch_Series").Value = Arg1
        Txt = Sheet1.Range("CH_Text").Value

        Set txtbox = ActiveSheet.Shapes.AddTextbox _
                                        (msoTextOrientationHorizontal, x - 150, y - 150, 150, 40)
        txtbox.Name = "hover"
        txtbox.Fill.Solid
        txtbox.Fill.ForeColor.SchemeColor = 9
        txtbox.Line.DashStyle = msoLineSolid
        chrt.Shapes("hover").TextFrame.Characters.Text = Txt
        With chrt.Shapes("hover").TextFrame.Characters.Font
            .Name = "Arial"
            .Size = 12
            .ColorIndex = 16
        End With

    ser.Points(Arg2).Interior.ColorIndex = 44
    txtbox.Left = x - 150
    txtbox.Top = y - 150

Else
   txtbox.Delete
    ser.Interior.ColorIndex = 16
End If

End Sub

ただし、ホバー機能については、以下を実行することもできます。

Private Sub Chart_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)

コードはモジュールではなくチャートシートに挿入する必要があることに注意してください。

グラフに適合するデータ範囲について、動的な名前付き範囲を試し、名前付き範囲を参照するようにグラフを設定しましたか?

MouseMove関数を設定して必要なものを表示し、MouseDownで選択した系列データ範囲に移動できます。

お役に立てれば。

于 2012-07-15T21:47:22.450 に答える