【问题标题】:Label and display chart标签和显示图表
【发布时间】:2015-11-12 09:12:38
【问题描述】:

我想显示一个带有适当标签的柱形图,并将列放置在正确的位置。

我有一年中每个月的工作表。第 2 行是一个月中的日期,即编号为 1 到 31,(从“B”列到“AF”列)。 “A”列有不同的产品,从第 3 行到第 12 行(编号为 1 到 10)。在整个月中,生产数字被放入一天和产品中。例如,当月 5 日的产品 #4 将在范围(“F6”)中放置一个生产编号。 31 日的产品 #1 将进入范围(“AF3”)。

我有以下代码在 Userform1 上生成柱形图。效果很好。

Private Sub CommandButton1_Click()

Dim chartData As Range
Dim oChrt As ChartObject

Application.ScreenUpdating = False

Set oChrt = ThisWorkbook.sheets("Oct").ChartObjects.Add _
            (Left:=24, Width:=768, Top:=66, Height:=402)
With oChrt.Chart
    .SetSourceData Source:=ThisWorkbook.sheets("Oct").Range("B6:AF6")
    .ChartType = xl3DColumn
End With

Dim imageName As String
imageName = Application.DefaultFilePath & Application.PathSeparator & "tempChart.gif"

oChrt.Chart.Export FileName:=imageName

ThisWorkbook.sheets("Oct").ChartObjects.Delete

Application.ScreenUpdating = True

UserForm1.Image1.Picture = LoadPicture(imageName)

End Sub

问题出在 x 轴上。 x 轴标记为 1 到它需要的任何值,即如果列“E”(6)、“J”(10)和“T”(20)(对于特定行)中有数据,图表将仅显示15 列,在第 1 列输入“E”,在第 5 列输入“J”,在第 15 列输入“T”。

我想要的是图表将第 1 到 5 列留空,并在 6 中显示“E”,就像它在工作表中一样。如果这就是我能做到的一切就好了。

但是,如果可以沿 x 轴创建另一行标签,我希望月份的日期低于月份的数字。日期(作为文本)在工作表的第 1 行,数字在第 2 行。

【问题讨论】:

    标签: excel charts vba


    【解决方案1】:

    尝试在您的 With-Block 中使用它:

    With oChrt.Chart
        .SetSourceData Source:=ThisWorkbook.sheets("Oct").Range("B6:AF6")
        .FullSeriesCollection(1).XValues = Range("B2","AF2")
        .ChartType = xl3DColumn
    End With
    

    【讨论】:

    • 抱歉,该行完全没有任何效果 - 没有任何改变。
    • 我解决了我的问题。如果“B6”中没有值,即当月的第一天,我放置了一个名义值(0.00001)。这迫使图表从 B 列开始。我还在用户窗体上的图表(即图像)下方放置了 31 个微小的“标签框”,每个标签框都在月份的日期下方排列。我会根据月份的日期在每个框中放置一个适当的字母(M 代表星期一,T 代表星期二等)。有点草率,但我认为它会解决的。
    • 我查看了许多网站,但似乎没有(或者我还没有找到它)一个令人满意的答案(在我看来)。
    猜你喜欢
    • 2018-07-08
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多