excel AddChart2 VBA宏中的数字表示什么?

rhfm7lfc  于 2023-05-19  发布在  其他
关注(0)|答案(4)|浏览(223)

我使用Excel 2013来记录插入图表的宏,在我的情况下是列簇图。在查看代码选项中,它显示了一行代码,如下所示:

ActiveSheet.Shapes.Addchart2(286,xl3DColumnClustered).Select

请帮助我,因为我不明白数字286代表什么。我知道Addchart2的语法是:

expression.AddChart2(Style,XlChartType,Left,Top,Width,Height,NewLayout)

如果我将“286”更改为“285”,图表将显示蓝色背景。如果数字为100,则会出现错误。
谁能告诉我这个数字代表什么?

mklgxw1f

mklgxw1f1#

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

Set oShp = ActiveSheet.Shapes.AddChart2(XlChartType:=xl3DColumnClustered)
oShp.Chart.SetSourceData Source:=RngDta

下图显示了所有图表类型(不包括StockHLC和StockVOHLC)的默认图表样式

fafcakar

fafcakar2#

这不会直接回答你的问题,但它会帮助你弄清楚发生了什么。
这纯粹是我的猜测,但我猜这是一个未记录的位域。正如你可能知道的,位字段只是使用数字的一种方式。因此,image我们有一个字节变量,它可以是8位(或标志)。因此,在一个字节中,我们可以存储多达8个值。
示例:我们有一个字段称为“DaysOpen”,位1-7表示商店在一周的那一天开门。(我们忽略第8位。)因此,如果存储是打开的M-F,则将是二进制0111 1100。
然后你只要把这个数字转换成十进制,我们就可以看到它是124。
该变量是一个变体,所以它可以是从字节到长的任何变量,这意味着它可以存储多达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
raogr8fs

raogr8fs3#

嗯,我也遇到过同样的情况,这些基本上都是图表风格。我试图弄清楚确切的编号,但后来我意识到,记录是一个更容易的方式知道的风格编号,就像你在这里所做的。
要回答你的问题,请记录宏,以了解你想在宏中实现哪种样式。

eyh26e7m

eyh26e7m4#

我找到了一个部分列表:https://learn.microsoft.com/en-us/office/vba/api/excel.xlcharttype
我相信这些数字,加上上面皮尔格拉姆建议的控制各种其他图表方面的位域变化,回答了这个问题。可能的组合数以千计,所以一个完整的列表将是非常无用的。录音仍然是你最好的选择。

相关问题