es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiar gráfico de rangos de celdas a rango con nombre.

¿Existe alguna manera de hacer VBA actualizando la serie de datos del gráfico desde un rango de celdas a un rango con nombre, ya que cuando lo muevo y copio a una nueva hoja en el mismo libro, vuelve a cambiar al rango de celdas?

Cuando lo muevo y copio a otra hoja, cambiará al rango de celdas, lo que necesito es un VBA de Excel para reemplazar el rango de celdas por el rango con nombre. La imagen 1 es para la hoja 2 y la imagen 2 es para la hoja 3.

Imágenes:
1
2

Agregué nuevas imágenes a continuación. Como puedes ver, cambia automáticamente la hoja a la que muevo y copio en la nueva hoja. Solo quiero cambiar el rango de celdas por el rango con nombre utilizando VBA automáticamente.
Imagen 1
Imagen 2

¿Qué sucede si tengo más rangos con nombre? ¿Cómo se aplica este VBA para completar el mismo rango con nombre en cada rango de datos del gráfico?
Imagen

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de actualizar la serie de datos del gráfico desde un rango de celdas a un rango con nombre usando VBA. Aquí hay un ejemplo de código VBA que reemplaza el rango de celdas con un rango con nombre para un gráfico:

    Sub ActualizarDatosGrafico()
       Dim ws As Worksheet
       Dim cht As ChartObject
       Dim srs As Series
    
       ' Cambia "RangoConNombre" por el nombre del rango con nombre que deseas utilizar
       Dim rangoConNombre As String
       rangoConNombre = "RangoConNombre"
    
       ' Recorre cada objeto de gráfico en el libro de trabajo
       For Each ws In ActiveWorkbook.Worksheets
          For Each cht In ws.ChartObjects
             ' Recorre cada serie de datos en el objeto de gráfico
             For Each srs In cht.Chart.SeriesCollection
                ' Reemplaza el rango de celdas con el rango con nombre para la serie de datos
                srs.Values = "=" & rangoConNombre
             Next srs
          Next cht
       Next ws
    End Sub
    

    Puedes ejecutar este código presionando F5 o yendo a la pestaña Desarrollador, haciendo clic en Macros y seleccionando la macro “ActualizarDatosGrafico”.

    Si tienes varios rangos con nombre y deseas reemplazar cada serie de datos con un rango con nombre diferente, puedes modificar el código agregando una lista de rangos con nombre y haciendo referencia a ellos para cada objeto de gráfico y serie de datos.

    Por ejemplo:

    Sub ActualizarDatosGrafico()
       Dim ws As Worksheet
       Dim cht As ChartObject
       Dim srs As Series
    
       ' Lista de rangos con nombre para usar en cada gráfico
       Dim rangosConNombre() As String
       rangosConNombre = Array("RangoConNombre1", "RangoConNombre2", "RangoConNombre3")
    
       ' Contador para llevar un registro del rango con nombre que se utilizará
       Dim i As Integer
       i = 0
    
       ' Recorre cada objeto de gráfico en el libro de trabajo
       For Each ws In ActiveWorkbook.Worksheets
          For Each cht In ws.ChartObjects
             ' Recorre cada serie de datos en el objeto de gráfico
             For Each srs In cht.Chart.SeriesCollection
                ' Reemplaza el rango de celdas con el rango con nombre para la serie de datos
                srs.Values = "=" & rangosConNombre(i)
                i = i + 1
             Next srs
          Next cht
       Next ws
    End Sub
    

    Este código utiliza una matriz de rangos con nombre y un contador para llevar un registro del rango con nombre que se utilizará para cada serie de datos en cada objeto de gráfico. Puedes modificar la lista de rangos con nombre para que coincida con los rangos con nombre de tu libro de trabajo.

Comments are closed.