AddChart2 VBA宏中的数字代表什么?

One*_*tch 13 excel charts vba excel-2013

我使用Excel 2013在插入图表时记录宏,在我的情况下是一个列聚簇图表.在视图代码选项中,它显示了一行代码,如下所示:

ActiveSheet.Shapes.Addchart2(286,xl3DColumnClustered).Select
Run Code Online (Sandbox Code Playgroud)

请帮助我,因为我无法理解286代表的是什么.我知道Addchart2的语法是:

expression.AddChart2(Style,XlChartType,Left,Top,Width,Height,NewLayout)
Run Code Online (Sandbox Code Playgroud)

如果我将"286"更改为"285",则图表将显示为蓝色背景.如果数字为100,则会出错.

谁能告诉我这个数字代表什么?

谢谢.

EEM*_*EEM 11

也可以只提供ChartType,应用程序将使用默认样式.

Set oShp = ActiveSheet.Shapes.AddChart2(XlChartType:=xl3DColumnClustered)
oShp.Chart.SetSourceData Source:=RngDta
Run Code Online (Sandbox Code Playgroud)

此图显示所有ChartTypes的默认ChartStyle(不包括StockHLC和StockVOHLC)

在此输入图像描述


Pil*_*ram 1

这不会直接回答您的问题,但会帮助您弄清楚发生了什么。

这纯粹是我的猜测,但我猜这是一个未记录的位字段。您可能知道位字段只是使用数字的一种方式。因此,我们有一个 Byte 变量,它可以是 8 位(或标志)。所以在一个字节中我们最多可以存储 8 个值。

示例:我们有一个名为“DaysOpen”的字段,位 1-7 表示商店在一周中的那一天营业。(我们将忽略第 8 位。)因此,如果存储打开 MF,则二进制为 0111 1100。

然后你只需将该数字转换为十进制,我们就会看到它是 124。

该变量是一个 Variant,因此它可以是从 Byte 到 Long 的任何值,这意味着它最多可以存储 64 个不同的标志。

作为旁注(如果您感兴趣),您可以使用位字段,如下所示:

Option Explicit

Public Enum DayFlags
    'Notice these are power of 2.
    dfSunday = 1
    dfMonday = 2
    dfTuesday = 4
    dfWednesday = 8
    dfThursday = 16
    dfFriday = 32
    dfSaturday = 64
End Enum

Sub Example()
    Dim openHours As DayFlags
    'Set the flags:
    openHours = dfMonday Or dfTuesday Or dfThursday
    'See the binary?
    MsgBox Right$("00000000" & Excel.WorksheetFunction.Dec2Bin(openHours), 8)
    'Notice the order is right to left. This is call endianness.
    'You can check for a specific flag like this:
    MsgBox IsOpenOnDay(openHours, dfMonday) & vbNewLine & IsOpenOnDay(openHours, dfFriday)
    'You can add a flag like this:
    openHours = openHours Or dfFriday
    MsgBox IsOpenOnDay(openHours, dfMonday) & vbNewLine & IsOpenOnDay(openHours, dfFriday)
    'You can remove a flag like this:
    openHours = openHours Xor dfFriday
    MsgBox IsOpenOnDay(openHours, dfMonday) & vbNewLine & IsOpenOnDay(openHours, dfFriday)
End Sub

Private Function IsOpenOnDay(ByVal openHours As DayFlags, ByVal day As DayFlags) As Boolean
    IsOpenOnDay = ((openHours And day) = day)
End Function
Run Code Online (Sandbox Code Playgroud)