Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función With aplicada a modificar un gráfico

| 1 comentario

FUNCIÓN WITH

La función WITH sirve para evitar tener que escribir un grupo de instrucciones de manera completa, cuando éstas son consecutivas y tienen a la vez una estructura similar.

1. Lógica de funcionamiento

Entiéndase que si tenemos un grupo de instrucciones consecutivas que son iguales en la primera parte, cambiando tan sólo la parte final de la sentencia, podemos utilizar la función With.

2. Sintaxis

Para “n” instrucciones cuyas sentencias comienzan igual:

With inicio común de todas las instrucciones siguientes
.sentencia faltante de la primera instrucción
.sentencia faltante de la segunda instrucción
 .sentencia faltante de la (n-1)-ésima instrucción
.sentencia faltante de la  (n)-ésima instrucción

3. Ejemplo práctico

Para hacer notoria la diferencia de usar y no usar With, citaré cómo cambiar algunas instrucciones del siguiente gráfico:

funcion WITH Grafico 01

Las instrucciones a cambiar serán:
-         Mover el gráfico a otra pestaña
-         Cambiar la presentación del gráfico
-         Cambiar el tipo de gráfico
Sin usar with:

Sub Macro3()
ActiveSheet.ChartObjects("2 Gráfico").Activate
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja2"
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.PlotArea.Select
ActiveSheet.ChartObjects("1 Gráfico").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartType = xlPyramidColStacked100
End Sub

Usando with:

Sub Macro3()
With ActiveSheet
.ChartObjects("2 Gráfico").Activate
.Location Where:=xlLocationAsObject, Name:="Hoja2"
.ChartObjects("1 Gráfico").Activate
.ChartObjects("1 Gráfico").Activate
.PlotArea.Select
.ChartObjects("1 Gráfico").Activate
.ChartArea.Select
.ChartType = xlPyramidColStacked100
End with
End Sub

Luego de ello, el gráfico habrá cambiado de pestaña y de forma, viéndose así:

funcion WITH Grafico 02

Elaborado por: Ernesto Tarazona Niño de Guzmán

Un comentario

  1. Estimados,
    hice una macro, que envia mail, pero quiero adjuntar 3 imagenes, de la primera pestaña, de la hoja activa... en el cuerpo de mail, o como adjunto...

    el tema no se como adjuntar las imágenes...
    "1 Gráfico" , "2 Gráfico" , "5 Gráfico" .

    La macro para el mail es:

    Private Sub Enviar_mail()
    FechaRep = Range("J3").Value
    TasaAb_ = Range("P11").Value
    NivelAt_ = Range("P12").Value
    LlamadasRec_ = Range("M10").Value
    LlamadasAb_ = Range("M9").Value

    'Mail
    Para_ = "mail@mail.mail"
    CC_ = "mail@mail.mail"
    Asunto_ = "Reporte del día: " & FechaRep & " ."
    texto_ = "Estimados: "

    Dim oLook As Object
    Dim oMail As Object

    Set oLook = CreateObject("Outlook.Application")
    Set oMail = oLook.createitem(0)
    With oMail
    .To = para_
    '.CC = CC_
    .body = texto_
    .Subject = Asunto_
    '.Attachments.Add (ActiveSheet.Shapes("1 Gráfico").Select)
    .Send
    End With

    Set oMail = Nothing
    Set oLook = Nothing

    End Sub

    Me podrían dar una mano... necesito
    1) adjuntar las imágenes en el Cuerpo de texto del mail,
    o..
    2)adjuntar las imágenes como adjunto de mail

    Muchas Gracias por el tiempo!!!

Deja una respuesta

Los campos requeridos estan marcados con *.