Mejorar Macro de Grafico que permita visualizar adecuadmente el título en función al valor de celdas

Escribo por que tengo un problema, y es que quiero modificar esta macro de manera que pueda presentarse de mejor manera un grafico.

A continuación muestro la imagen de como funciona la macro:

La macro genera un grafico conforme se este desplazando el cursor sobre la celda, hast ahí todo bien sin embargo yo quisiera que:

1.-En el titulo a parte del mes tambien se considere el texto de la celda "C4" y el de la celda "C3" (los valores de estas celdas son variables). En este caso debe decir en el titulo algo así: "Agosto, Shihuahuaco, 3"

2.- Que si hago clik en cualquier celda donde no haya datos ( apartir de la columna "F" ya no se muestre el gráfico.

A contonuación va la macro que se utiliza en un módulo:

Sub actualiza1() 'ACTUALIZA LOS DATOS MIENTRAS ESTE ACTIVADO EL CHEKBOX
Dim Graf As ChartObject
Dim Grafico As Chart
Dim longFila As Long
Dim Titulos As Range
Dim Rango As Range
Dim Datos As Range
If Sheets("Hoja6").CheckBox1 Then
Set Graf = ActiveSheet.ChartObjects(1)
Set Grafico = Graf.Chart
longFila = ActiveCell.Row
        If longFila < 2 Or IsEmpty(Cells(longFila, 1)) Then
        Graf.Visible = False
        Else
        Set Titulos = Range("A6:d6")
        Set Rango = Range(Cells(longFila, 1), Cells(longFila, 4))
        Set Datos = Union(Titulos, Rango)
        Grafico.SetSourceData Source:=Datos, PlotBy:=xlRows
        Graf.Visible = True
        End If
End If
End Sub

 por otro lado en la hoja tambien inserto el siguie nte código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)'ÉN LA HOJA PERMITE MOSTRAR EL GRAFICO
Call actualiza1
End Sub

1 respuesta

Respuesta
1

Cambia la macro de la hoja por esta:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'ÉN LA HOJA PERMITE MOSTRAR EL GRAFICO
    If Not Intersect(Target, Range("A:E")) Is Nothing Then
        Call actualiza1
    End If
End Sub

Cambia la macro por esta

Sub actualiza1() 'ACTUALIZA LOS DATOS MIENTRAS ESTE ACTIVADO EL CHEKBOX
'Act.Por.Dante Amor
    Dim Graf As ChartObject
    Dim Grafico As Chart
    Dim longFila As Long
    Dim Titulos As Range
    Dim Rango As Range
    Dim Datos As Range
    If Sheets("Hoja6").CheckBox1 Then
        Set Graf = ActiveSheet.ChartObjects(1)
        Set Grafico = Graf.Chart
        longFila = ActiveCell.Row
        If longFila < 2 Or IsEmpty(Cells(longFila, 1)) Then
            Graf.Visible = False
        Else
            Set Titulos = Range("A6:d6")
            Set Rango = Range(Cells(longFila, 1), Cells(longFila, 4))
            Set Datos = Union(Titulos, Rango)
            Grafico.SetSourceData Source:=Datos, PlotBy:=xlRows
            Grafico.ChartTitle.Text = Cells(longFila, 1) & "," & [C4] & "," & [C3]
            Graf.Visible = True
        End If
    End If
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Disculpa, no había entendido bien el último punto.

Regrese tu macro de la hoja

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'ÉN LA HOJA PERMITE MOSTRAR EL GRAFICO
    Call actualiza1
End Sub

Y cambia la macro por esta:

Sub actualiza1() 'ACTUALIZA LOS DATOS MIENTRAS ESTE ACTIVADO EL CHEKBOX
'Act.Por.Dante Amor
    Dim Graf As ChartObject
    Dim Grafico As Chart
    Dim longFila As Long
    Dim Titulos As Range
    Dim Rango As Range
    Dim Datos As Range
    If Sheets("Hoja6").CheckBox1 Then
        Set Graf = ActiveSheet.ChartObjects(1)
        Set Grafico = Graf.Chart
        longFila = ActiveCell.Row
        If longFila < 2 Or IsEmpty(Cells(longFila, 1)) Or ActiveCell.Column > 5 Then
            Graf.Visible = False
        Else
            Set Titulos = Range("A6:d6")
            Set Rango = Range(Cells(longFila, 1), Cells(longFila, 4))
            Set Datos = Union(Titulos, Rango)
            Grafico.SetSourceData Source:=Datos, PlotBy:=xlRows
            Grafico.ChartTitle.Text = Cells(longFila, 1) & "," & [C4] & "," & [C3]
            Graf.Visible = True
        End If
    End If
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas