Изменение количества категорий между метками меток на оси X диаграммы - PullRequest
0 голосов
/ 16 октября 2019

Если у меня больше (или меньше) данных в моем графике Access 2010, я хочу уменьшить (или увеличить) количество отметок на оси X. Я искал правильный синтаксис, но не смог его найти.

Я сделал то же самое для заголовка оси Y, и он отлично работает:

me.Graph1.Object.Axes(2,1).AxisTitles.Caption="g/ml"

Для числа отметок оси X;Я попробовал несколько слов, не могу найти подходящее. Остановился на:

me.Graph.Object.Axes(1,1).Scale.???????? (I want a number of categories = 3 )

1 Ответ

0 голосов
/ 16 октября 2019

Пример кода из моей базы данных для диаграммы XYScatter. xlCategory для оси X, а xlValue для оси Y.

  1. эта процедура находится в стандартном модуле и вызывается формой и отчетом
Sub FormatProcGraph(strObject As String, strLabNum As String, booMetric As Boolean, dblOMC, dblMDD)
'format Proctor graph on form and report
Dim obj As Object
Dim gc As Object
Dim intMaxD As Integer
Dim intMinD As Integer
Dim intM As Integer
If strObject Like "Lab*" Then
    Set obj = Reports(strObject)
Else
    Set obj = Forms(strObject).Controls("ctrProctor").Form
End If
Set gc = obj("gphDensity")
intMaxD = Nz(Int(dblMDD), 0)
intMinD = Nz(Int(DMin("D", "GraphProctor", "Source='Lab' AND LabNum='" & strLabNum & "'")), 0)
With gc
'format y axis scale
If booMetric = True Then
    intMaxD = intMaxD + IIf(intMaxD - intMinD < 125, 50, IIf(intMaxD - intMinD < 250, 25, 0))
    .Axes(xlValue).MaximumScale = intMaxD
    .Axes(xlValue).MinimumScale = intMaxD - 250
    .Axes(xlValue).MajorUnit = 50
    .Axes(xlValue).MinorUnit = 10
Else
    intMaxD = intMaxD + IIf(intMaxD - intMinD < 6, 2, IIf(intMaxD - intMinD < 10, 1, 0))
    .Axes(xlValue).MaximumScale = intMaxD
    .Axes(xlValue).MinimumScale = intMaxD - 10
    .Axes(xlValue).MajorUnit = 2
    .Axes(xlValue).MinorUnit = 0.4
End If
'format x axis scale
If Int(dblOMC) > 6 Then
    intM = Int(dblOMC) + IIf(dblOMC - Int(dblOMC) >= 0.5, 1, 0)
    .Axes(xlCategory).MaximumScale = intM + 7
    .Axes(xlCategory).MinimumScale = intM - 5
End If
'y axis label
.Axes(xlValue, xlPrimary).HasTitle = True
If booMetric = True Then
    .Axes(xlValue, xlPrimary).AxisTitle.Text = "Dry Density, kg/cu.m"
End If
End With
End Sub
эта процедура находится за отчетом
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
'format graphs
Dim MinUWT As Double, MaxUWT As Double
Dim MinDry As Double, MaxDry As Double
Dim MinSoak As Double, MaxSoak As Double
Dim MinRat As Double, MaxRat As Double
With Me
If Not IsNull(!MinOfA) Then
    MinUWT = Int(!MinOfU) - IIf(!MaxOfU - !MinOfU <= 2, 3, 1)
    MaxUWT = MinUWT + 8
    MinDry = Int(!MinOfD / 5) * 5 - (40 - Int((Int(!MaxOfD / 5) * 5 + 5 - Int(!MinOfD / 5) * 5) / 10) * 10) / 2
    MaxDry = MinDry + 40
    MinSoak = Int(!MinOfS / 5) * 5 - (40 - Int((Int(!MaxOfS / 5) * 5 + 5 - Int(!MinOfS / 5) * 5) / 10) * 10) / 2
    MaxSoak = MinSoak + 40
    MinRat = Int(!MinOfR / 5) * 5 - (40 - Int((Int(!MaxOfR / 5) * 5 + 5 - Int(!MinOfR / 5) * 5) / 10) * 10) / 2
    MaxRat = MinRat + 40
    .gphWeight.Axes(xlValue).MinimumScale = MinUWT
    .gphWeight.Axes(xlValue).MaximumScale = MaxUWT
    .gphITSdry.Axes(xlValue).MinimumScale = MinDry
    .gphITSdry.Axes(xlValue).MaximumScale = MaxDry
    .gphITSsoak.Axes(xlValue).MinimumScale = MinSoak
    .gphITSsoak.Axes(xlValue).MaximumScale = MaxSoak
    .gphITSret.Axes(xlValue).MinimumScale = MinRat
    .gphITSret.Axes(xlValue).MaximumScale = MaxRat
    If Me!Metric = True Then
        .gphWeight.Axes(xlValue, xlPrimary).AxisTitle.Text = "Unit Weight, kg/cu.cm"
        .gphGradation.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Sieve Size (mm)"
        .gphITSdry.Axes(xlValue, xlPrimary).AxisTitle.Text = "ITS Dry, kg/cu.cm"
        .gphITSsoak.Axes(xlValue, xlPrimary).AxisTitle.Text = "ITS Soaked, kg/cu.cm"
    End If
End If
End With
End Sub
...