0

Excel でグラフのズームイン関数を既にコーディングしましたが、スクロールバーの値を使用してズームアウトする方法がわかりません。

誰でも私を助けることができますか?

Private Sub Zoom_X_Change1()
    With ActiveSheet.ChartObjects("Chart 20").Chart

        If (.Axes(xlCategory).MinimumScale >= 0) And (.Axes(xlCategory).MinimumScale < 0.4) Then
                .Axes(xlCategory).MinimumScale = .Axes(xlCategory).MinimumScale + 0.1
        End If

        If (.Axes(xlCategory).MaximumScale > 0.6) And (.Axes(xlCategory).MaximumScale <= 1) Then
                .Axes(xlCategory).MaximumScale = .Axes(xlCategory).MaximumScale - 0.1
        End If

    End With
End Sub

スクロール:

Dim aX As Integer
Dim aY As Integer
Dim arrScale As Variant

Private Sub Scale_X_Change()
    arrScale = Array(-0.5, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11)
    aX = arrScale(Scale_X.Value - 1)
    With ActiveSheet.ChartObjects("Chart 20").Chart
        .Axes(xlCategory).MinimumScale = 0
        .Axes(xlCategory).MaximumScale = aX
    End With
End Sub
4

1 に答える 1

0

これを試して。ScrollBar がセルにリンクされていることを確認してください。私の例ではリンクされていますが、J5必要に応じて変更してください。

このマクロは、現在の軸.MinimumScaleをリンクされたセルの値と比較し、ズームインおよびズームアウトします。

コントロールをリンクされたセルに書式設定する

また、ScrollBar の最小値/最大値と増分値が適切に設定されていることを確認してください。次に例を示します。

スクロール バーのプロパティを設定する

Sub ScrollBar1_Change()
Dim ax As Axis
Dim sbMin As Double
Dim sbMax As Double
Dim sbMove As Double
Dim sbVal As Double
Dim minVal As Double
Dim maxVal As Double

sbMin = 0   '## Set this to the minimum desired axis scale.'
sbMax = 0.6 '## set this to the maximum desired axis scale.'
sbMove = 0.1 '## Set this to the desired increment.'
sbVal = Range("J5").Value '## this is the cell linked to the scrollbar, modify as needed.'

Set ax = ActiveSheet.ChartObjects("Chart 20").Chart.Axes(xlCategory)

    With ax
        '## check to see if we are zooming out, and flip the sign on sbMove'
        If sbVal < .MinimumScale Then sbMove = sbMove * -1
        '## Manipulate the axis min & max:'
        If Not sbVal >= 0.5 * sbMax Then
        '## Manipulate the axis min & max:'
            If (.MinimumScale <> sbVal) Then
                .MinimumScale = .MinimumScale + sbMove
                .MaximumScale = .MaximumScale - sbMove
                .CrossesAt = sbVal
            End If
        End If
    End With

End Sub
于 2013-04-30T14:29:27.743 に答える