この質問は、VBA を使用してグラフからデータ ポイントを削除することを参照しています。
広範囲にわたる検索の後、非常に便利なコードに出くわしました。特に、Jon Peltier (埋め込みチャート内のポイントに関する情報を取得) から:
残念ながら、このコードは系列名とデータ ポイントの値のみを返します (非常に便利ですが、さらに一歩進める必要があります)。このコードをもう少し堅牢にするために、理想的には、選択されたデータ ポイントのセル位置を返します (強調表示、削除などを行うことができます)。少し前に別のフォーラムでまったく同じ質問がありましたが、解決策はありませんでした (ozgrid のリンクを参照してください。以下のリンクを参照してください)。
基本的に、シリーズ名とデータ ポイントからセル アドレスを抽出する必要があります。これにより、セルの内容をクリアするコード セクションを記述して、チャートからデータ ポイントを削除できます。何か案は?つまり、更新するコードの部分:
'Sheet4.Cells(b, ????).ClearContents
ご意見ありがとうございます。
この質問は、次の場所でも尋ねられました。
http://www.ozgrid.com/forum/showthread.php?t=181251&goto=newpost **
(ジョン・ペルティアおよびその他の参考文献へのリンク付き)
完全なコードは次のとおりです。
Private Sub EvtChart_MouseUp(ByVal Button As Long, ByVal Shift As Long, _
ByVal x As Long, ByVal y As Long)
'extracted and modified from [URL]http://www.computorcompanion.com/LPMArticle.asp?ID=221[/URL]
Dim ElementID As Long
Dim a As Long
Dim b As Long
Dim msg As String
Dim myX As Date
Dim myY As Double
Dim Answer As Integer
Dim Counter As Integer
Dim QAFDest As Range
Dim NoRows As Integer
With ActiveChart
' Pass x & y, return ElementID and Args
.GetChartElement x, y, ElementID, a, b
If ElementID = xlSeries Then
If b > 0 Then
' Extract x value from array of x values
myX = WorksheetFunction.Index _
(.SeriesCollection(a).XValues, b)
' Extract y value from array of y values
myY = WorksheetFunction.Index _
(.SeriesCollection(a).Values, b)
' Display message box with point information
msg = "You are about to remove the following point from data Series " & vbCrLf _
& """" & .SeriesCollection(a).Name & """" & vbCrLf _
& "Point " & b & vbCrLf _
& "Value = " & myY & vbCrLf _
& "Continue?"
If MsgBox(msg, vbOKCancel) = vbOK Then
'Sheet4.Cells(b, ????).ClearContents
End If
End If
End If
End With
End Sub