2015-01-11 16 views
10

Ho usato il mio Excel 2013 per registrare una macro nell'inserimento di un grafico, un grafico a colonne nel mio caso. Nell'opzione codice della vista, mi mostra una riga di codice, come di seguito:Che cosa rappresenta il numero nella macro VBA AddChart2?

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

Please help me come io non riesco a capire che cosa fa il numero 286 rappresenta. So che la sintassi di Addchart2 è:

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

Se cambio la "286" a "285", il grafico appare con uno sfondo blu. Viene visualizzato un errore se il numero è 100.

Qualcuno può gentilmente dirmi cosa rappresenta il numero?

Grazie.

+2

Molto interessante domanda evidenziando una mancanza di [specifiche] (http://msdn.microsoft.com /en-us/library/office/ff838167(v=office.15).aspx). Posso solo trovare ci sono 48 stili (che vanno da 1 a 48), quindi questa potrebbe non essere la risposta (se sei in grado di inserire 286 o 285) ma un buon punto di partenza. Tuttavia, nulla è detto nella [documentazione ufficiale] (http://msdn.microsoft.com/en-us/library/office/jj228277%28v=office.15%29.aspx) quindi aspettiamo qualcuno che lo sappia Altri significati. –

+1

A quanto pare gli stili variano da 201 a 353 secondo [questo articolo] (https://books.google.com/books?id=C-4-Es0OXeIC&pg=RA9-PT250&lpg=RA9-PT250&dq=addchart2.+ Eccellere + VBA + style + parametro & source = bl & ots = pRSq7z7NGv & sig = PX7bHdDALq7CIUSgKtnMd8U2Imk & hl = it & sa = X & ei = C8myVOCUAsW1sAT87YLYDQ & ved = 0CDkQ6AEwBA # v = onepage & q = addchart2.% 20excel% 20vba% 20style% 20parameter & f = false). – peege

+0

L'articolo sopra menzionato ha molte informazioni su altri stili di grafico e menzioni anche che l'originale 1-48 continua a funzionare. – peege

risposta

0

Questo non risponderà direttamente alla tua domanda, ma ti aiuterà a capire cosa sta succedendo.

Questa è pura congettura da parte mia, ma suppongo che sia un campo di bit non documentato. Come forse saprai, un campo di bit è solo un modo per usare un numero. Quindi immagine abbiamo una variabile Byte che può essere 8 bit (o flag). Quindi in un byte possiamo memorizzare fino a 8 valori.

Esempio: abbiamo campo chiamato "DaysOpen" bit 1-7 significa che il negozio è aperto in quel giorno della settimana. (Noi ignoreremo l'8 bit.) Quindi, se il negozio è aperto MF che sarebbe binario 0111 1100.

Poi basta convertire quel numero a decimale e si vede che si tratta di 124.

quella variabile è una variante quindi potrebbe essere qualsiasi cosa, da un byte a lungo, nel senso che potrebbe memorizzare fino a 64 flag diversi.

Come nota a margine (se siete interessati) è possibile utilizzare i campi di bit in questo modo:

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 
0

Beh, ho avuto la stessa situazione una volta, e quelli sono fondamentalmente grafico stili. Ho cercato di capire la numerazione esatta ma poi mi sono reso conto che la registrazione era un modo molto più semplice di conoscere i numeri di stile proprio come hai fatto qui.

Per rispondere alla domanda, registrare macro per sapere quale stile si desidera implementare nelle macro.

6

Si può anche fornire solo il ChartType e l'applicazione utilizzerà lo stile predefinito.

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

Questa immagine mostra la ChartStyle predefinito per tutti i ChartTypes (esclusi StockHLC e StockVOHLC)

enter image description here

Problemi correlati