私はExcel2013を使用して、グラフ(私の場合は列クラスターグラフ)を挿入する際のマクロを記録しました。コードの表示オプションでは、次のようなコード行が表示されます。
ActiveSheet.Shapes.Addchart2(286,xl3DColumnClustered).Select
286という数字が何を表しているのか理解できないので、助けてください。 Addchart2の構文は次のとおりです。
expression.AddChart2(Style,XlChartType,Left,Top,Width,Height,NewLayout)
「286」を「285」に変更すると、チャートは青い背景で表示されます。数が100の場合はエラーが出ます。
数字が何を表しているのか教えてもらえますか?
ChartTypeのみを指定することもでき、アプリケーションはデフォルトのスタイルを使用します。
Set oShp = ActiveSheet.Shapes.AddChart2(XlChartType:=xl3DColumnClustered)
oShp.Chart.SetSourceData Source:=RngDta
この図は、すべてのChartType(StockHLCとStockVOHLCを除く)のデフォルトのChartStyleを示しています。
さて、私はかつて同じ状況にありました、そしてそれらは基本的にチャートスタイルです。正確な番号を付けようとしましたが、ここで行ったように、録音がスタイル番号を知るためのはるかに簡単な方法であることに気付きました。
質問に答えるには、マクロを記録して、マクロに実装するスタイルを確認します。
これはあなたの質問に直接答えることはありませんが、何が起こっているのかを理解するのに役立ちます。
これは私の側の純粋な推測ですが、文書化されていないビットフィールドだと思います。ご存知かもしれませんが、ビットフィールドは数値を使用する方法にすぎません。したがって、8ビット(またはフラグ)のバイト変数があります。したがって、1バイトに最大8つの値を格納できます。
例:「DaysOpen」ビット1〜7というフィールドがあり、ストアがその曜日に開いていることを意味します。 (8番目のビットは無視します。)したがって、ストアがオープンM-Fの場合、バイナリ01111100になります。
次に、その数値を10進数に変換すると、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