With ActiveChart.Axes(xlCategory).DisplayUnit

23/10/2007 - 23:52 por jfranco | Informe spam
En el siguiente código de abajo quisiera que me ayuden solucionar mi
problemaresulta que quiero colocar en una variable el valor de
Ciento (xlHundreds) o Miles (xlThounsands) o Millones (xlMillions) o
Billones (xlBillions), ect en el eje de las "X" de mi grafico...pero
resulta que lo coloco como texto y no me da...que me pueden
sugerir?...les agradezco de antemano.

Jorge Franco


Cells(9, 14).Value = "Millons"

Sub EscalaGrafico()
Application.ScreenUpdating = False
Sheets("UCMPS").Activate
Xmin = Cells(6, 14).Value
Xmax = Cells(7, 14).Value
RX = Cells(8, 14).Value
XDU = "xl" & Cells(9, 14).Value
Ymin = Cells(10, 14).Value
Ymax = Cells(11, 14).Value
RY = Cells(12, 14).Value

For I = 1 To 4

ActiveSheet.ChartObjects(I).Activate
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = Xmin
.MaximumScale = Xmax
.MinorUnitIsAuto = True
.MajorUnit = RX
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = XDU
.HasDisplayUnitLabel = True
End With
 

Leer las respuestas

#1 Héctor Miguel
24/10/2007 - 07:11 | Informe spam
hola, Jorge !

En el siguiente codigo de abajo quisiera que me ayuden solucionar mi problema...
resulta que quiero colocar en una variable el valor de Ciento (xlHundreds) o Miles (xlThounsands) o Millones (xlMillions)
o Billones (xlBillions), ect en el eje de las "X" de mi grafico...pero resulta que lo coloco como texto y no me da...
que me pueden sugerir?...les agradezco de antemano.



el detalle es que los miembros de "DisplayUnit" son constantes (es decir)...
tienen nombres "representativos", pero sus equivalencias (o constantes) son valores enteros (por lo cual)
no pueden ser "tratados"/indicados/establecidos/... de manera textual (variables de tipo String por su tratamiento)

consulta desde el editor de vba sus equivalencias por medio del explorador de objetos -> atajo de teclado = {F2}
seleccionas de la coleccion de objetos de excel, pulsas la x (lo encontraras por orden alfabetico como XlDisplayUnit)

(comentarios):
a) sus equivalencias (o constantes) son enteros negativos y se corresponden con el numero de posiciones
(enteros/decimales) que se suprimen de la representacion grafica del numero en la escala

b) no existe una constante llamada "xlBillions" (como tal) pero existe xlThusandMillions (nueve ceros)

c) serian el equivalente de usar en una hoja de calculo (p.e.) para representar 1000000000 como 1 (uno)
si estando 1000000000 en A1 utilizas la funcion: =texto(a1,"0,,,") <= mi separador de miles es la coma... OJO
o... para redondear de 1234567890 para "verlo" como unicamente 1000000000: =redondear(a1,-9)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ las lineas de codigo expuestas __
Cells(9, 14).Value = "Millons"

Sub EscalaGrafico()
Application.ScreenUpdating = False
Sheets("UCMPS").Activate
Xmin = Cells(6, 14).Value
Xmax = Cells(7, 14).Value
RX = Cells(8, 14).Value
XDU = "xl" & Cells(9, 14).Value
Ymin = Cells(10, 14).Value
Ymax = Cells(11, 14).Value
RY = Cells(12, 14).Value

For I = 1 To 4

ActiveSheet.ChartObjects(I).Activate
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = Xmin
.MaximumScale = Xmax
.MinorUnitIsAuto = True
.MajorUnit = RX
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = XDU
.HasDisplayUnitLabel = True
End With

Preguntas similares