Member 14575813 Ответов: 1

Функция элемента Getchart в коде Excel VBA не возвращает данные до тех пор, пока лист, содержащий встроенную диаграмму, не активируется один раз


функция элемента getchart в коде Excel vba не возвращает данные до тех пор, пока лист, содержащий встроенную диаграмму, не активируется один раз

Что я уже пробовал:

Private Sub Image3_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    On Error Resume Next
    Const CNST_DISTFROMDATAPOINT = 20
    Dim IDNum As Long
    Dim a As Long
    Dim b As Long
    Dim Chrt As Chart
    
    'WZoom = ActiveWindow.Zoom / 100
    WZoom = 1
    C = PointsPerPixel / WZoom
    CW = DteIntrvlSheet.ChartObjects("Chart Intrvl").Width
    CH = DteIntrvlSheet.ChartObjects("Chart Intrvl").Height
    Set Chrt = DteIntrvlSheet.ChartObjects("Chart Intrvl").Chart
    IW = Image3.Width
    IH = Image3.Height
    CX = Round(X / IW * CW / C, 0)
    CY = Round(Y / IH * CH / C, 0)
    Chrt.GetChartElement CX, CY, IDNum, a, b
    If IDNum = xlSeries Then
        ID = (a + 1) \ 2
        Frame2.Caption = DteIntrvlSheet.Range("A2").Offset(b, 0).Value
        Label31.Caption = DteIntrvlSheet.Range("A1").Offset(0, ID).Value
        Label32.Caption = "Volume: " & Format(DteIntrvlSheet.Range("A2").Offset(b, ID).Value, "#,##") & " (Lit.)"
        Select Case a Mod 2
            Case 0
                Label33.Caption = DteIntrvlSheet.Range("A2").Offset(b, ID + 8).Value
                Frame2.Height = 80
            Case 1
                Label33.Caption = ""
                Frame2.Height = 34
        End Select
        With Frame2
            FL = X + CNST_DISTFROMDATAPOINT
            FT = Y + CNST_DISTFROMDATAPOINT
            FW = .Width
            FH = .Height
            ' Adjust the position, if tooltip at default position would not fit onto the Image area
            If FL + FW > Image3.Left + Image3.Width Then
                FL = FL + (-FW - 2 * CNST_DISTFROMDATAPOINT)
            End If
            If FT + FH > Image3.Top + Image3.Height Then
                FT = FT + (-FH - 2 * CNST_DISTFROMDATAPOINT)
            End If
            .Left = FL
            .Top = FT
            ' Make the tooltip visible
            .Visible = True
        End With
    Else
        Frame2.Visible = False
    End If
End Sub

1 Ответов

Рейтинг:
0

phil.o

Я думаю, что вы должны активировать лист программно, то:
Рабочий лист.Метод активации (Excel)[^]