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)

这不会直接回答您的问题,但会帮助您弄清楚发生了什么。
这纯粹是我的猜测,但我猜这是一个未记录的位字段。您可能知道位字段只是使用数字的一种方式。因此,我们有一个 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)