Кликабельная диаграмма в Excel - PullRequest
0 голосов
/ 25 августа 2018

Я хочу создать круговую диаграмму со связанным листом, но когда я нажимаю на график, я получаю сообщение об ошибке «Аргумент ошибки компиляции не является обязательным» в строке кода «WorkSheetFunction.Index». Я новичок в кодировании VBA .. Пожалуйста, помогите это мой код xl page

ThisWorkbook модуль

Dim ChartObjectClass As New Class1
Dim ChartObjectClass2 As New Class2

Private Sub Workbook_Open()
    Set ChartObjectClass.ChartObject = Worksheets(1).ChartObjects(1).Chart
    Set ChartObjectClass2.ChartObject = Worksheets(1).ChartObjects(2).Chart
End Sub

Модуль класса

Option Explicit
Public WithEvents ChartObject As Chart

Private Sub ChartObject_MouseUp(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 myX As Variant, myY As Double
    With ActiveChart
        .GetChartElement x, y, ElementID, Arg1, Arg2
        If ElementID = xlSeries Or ElementID = xlDataLabel Then
            If Arg2 > 0 Then
                myX=WorksheetFunction.Index(.SeriesCollection(Arg1).XValues.Arg2)
                myY=WorksheetFunction.Index(.SeriesCollection(Arg1).Values.Arg2)
                MsgBox "Series" & Arg1 & vbCrLf & """" & .SeriesCollection(Arg1)_
                    .Name & """" & vbCrLf & "Point" & Arg2 & vbCrLf & _
                        "x= " & myX & vbCrLf & "y= " & myY
                Range("A1").Select
                On Error Resume Next
                Sheets("Series" & myX & "Detail").Select
                Range("A1").Select
                On Error GoTo 0
            End If
        End If
    End With
End Sub

1 Ответ

0 голосов
/ 25 августа 2018

В вашем случае Index требует двух аргументов. Первый аргумент указывает массив значений, из которого нужно вернуть значение. Второй аргумент указывает n-й элемент массива для возврата.

myX = WorksheetFunction.Index(.SeriesCollection(Arg1).XValues, Arg2)
myY = WorksheetFunction.Index(.SeriesCollection(Arg1).Values, Arg2)

Кстати, вы также можете обойтись без использования WorksheetFunction.Index ...

myX = .SeriesCollection(Arg1).XValues()(Arg2)
myY = .SeriesCollection(Arg1).Values()(Arg2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...