programing

AddChart2 VBA 매크로의 숫자는 무엇을 나타냅니까?

newnotes 2023. 9. 7. 22:01
반응형

AddChart2 VBA 매크로의 숫자는 무엇을 나타냅니까?

저는 Excel 2013을 사용하여 차트를 삽입할 때 매크로를 기록한 적이 있습니다. 제 경우에는 열로 된 차트입니다.보기 코드 옵션에는 다음과 같은 코드 라인이 표시됩니다.

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

이 그림은 모든 차트 유형(Stock 제외)에 대한 기본 차트 스타일을 보여줍니다.HLC 및 스톡 VOHLC)

enter image description here

이것이 당신의 질문에 직접적으로 대답하지는 않겠지만, 무슨 일이 일어나고 있는지 알아내는 데 도움이 될 것입니다.

이것은 제 입장에서는 순수한 추측이지만, 저는 이것이 문서화되지 않은 비트 필드라고 추측합니다.비트 필드는 숫자를 사용하는 방법일 뿐이라는 것을 알 수 있습니다.이미지에는 8비트(또는 플래그)가 될 수 있는 Byte 변수가 있습니다.따라서 바이트에는 최대 8개의 값을 저장할 수 있습니다.

예:"오픈일" 비트 1~7이라는 필드가 있는데, 이는 해당 요일에 매장이 문을 여는 것을 의미합니다.(8비트는 무시하겠습니다.)따라서 스토어가 열려있는 M-F라면 바이너리 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

글쎄요, 저도 같은 상황을 겪은 적이 있는데, 그건 기본적으로 차트 스타일입니다.정확한 번호를 알아내려고 했지만 여기서 했던 것처럼 녹음이 스타일 번호를 알 수 있는 훨씬 쉬운 방법이라는 것을 깨달았습니다.

질문에 답하려면 매크로를 기록하여 매크로에 구현할 스타일을 알 수 있습니다.

부분 목록을 찾았습니다. https://learn.microsoft.com/en-us/office/vba/api/excel.xlcharttype

저는 이 숫자들과 다양한 다른 차트 측면을 제어하기 위해 위의 필그램이 제안한 비트 필드 변형을 더하면 질문에 답할 수 있을 것이라고 확신합니다.가능한 조합은 수천 개이므로 전체 목록은 거의 쓸모가 없을 것입니다.녹음은 여전히 최선의 방법입니다.

언급URL : https://stackoverflow.com/questions/27889579/what-does-the-number-in-the-addchart2-vba-macro-represent

반응형