Problema con macro para actualizar gráficas

Tengo un fichero Excel con varias hojas. En cada hoja tengo varias gráficas. De momento sólo quiero actualizar mediante una macro estas gráficas. Con la opción sencilla de grabar una macro, ya tengo mi código, el cual he modificado para que me coja hasta la última fila con datos. El problema reside en que una gráfica de la primera hoja, después de accionar la macro, me coge los datos de la otra hoja, cuando en realidad, cada gráfica debería coger los datos de su propia hoja. También me pasa con una de las gráficas de la segunda hoja, me coge los datos de la primera hoja.
El código de una de las gráficas es:
Dim numRows As Integer
With Worksheets("Hoja1")
numRows = .Range("A3", .Range("A3").End(xlDown)).Rows.Count
    ActiveSheet.ChartObjects("Gráfico 2").Activate
    ActiveChart.ChartArea.Select
    ActiveChart.SeriesCollection(1).XValues = "='Históricas Zonas GSM'!R10C1:R" & numRows & "C1"
    ActiveChart.SeriesCollection(1).Values = "='Hoja1'!R10C2:R" & numRows & "C2"
    ActiveChart.SeriesCollection(2).Values = "='Hoja1'!R10C3:R" & numRows & "C3"
    ActiveChart.SeriesCollection(3).Values = "='Hoja1'!R10C4:R" & numRows & "C4"
    ActiveChart.SeriesCollection(4).Values = "='Hoja1'!R10C27:R" & numRows & "C27"

1 respuesta

Respuesta
1
Si te fijas en la macro, están identificadas las hojas. Debieras ajustar allí colocando el nbre que les corresponda.
Por ej:
ActiveChart.SeriesCollection(1).XValues = "='Históricas Zonas GSM'!R10C1:R" & numRows & "C1"
Y más adelante menciona Hoja1.
Como la macro no está completa (no se ve el End With), quizás haya + líneas para ajustar.
Muchas gracias por su pronta respuesta.
Si, en realidad el nombre de la hoja es Históricas Zonas GSM, pero le puse el nombre Hoja1 para que se viera más claro el ejemplo. Al reemplazar, olvidé sustituir esa fila.
Por otra parte, es cierto que faltan más filas, con el código de las gráficas.
El problema persiste, y es el solapamiento de datos, una de las gráficas de la Hoja1 coge datos de la Hoja2, cuando en realidad quiero coja datos de la Hoja1..
Muchas gracias
Creo que ya lo solucioné, aunque no entiendo que no pudiera hacerlo de la otra forma. Me explico: las macros de cada hoja las había juntado en un mismo módulo, y me daba error. Probé a crear otro módulo y copiarme en éste, el código correspondiente a una de las hojas. No volvió a darme error. Mi pregunta en este caso es la siguiente, ¿debo crear un módulo por cada hoja que contenga macros? En teoría, utilizando la función With, que hace referencia a la hoja que queremos actualizar, no debería ser necesario pero.. de momento es la única solución que encontré..
Gracias y un saludo.
Con tan pocas instrucciones a la vista, y sin conocer en qué evento se están incluyendo esas instrucciones, no me es posible determinar tu problema.
Pero no puedo dejar que tomes como cierta la idea de que debes hacer un módulo por cada hoja con macros. Eso no tiene ningún sentido.
Voy a aclarar algunos puntos:
- Un módulo insertado, puede contener de 1 a varias macros, para ser ejecutadas por 1 o varias hojas. Si la misma macro será ejecutada desde distintas hojas habrá que tener la precaución de mencionar la hoja activa.
- Las rutinas que se dejan en el objeto HOJA solo actuarán en esa hoja. Ejemplos de estas son las que empiezan con Private Sub WorkSheet_Change o SelectionChange, y otras.
También la de los objetos dibujados en una hoja y que tengan su rutina asociada empezando con algo así:
Private Sub CommandButton1_Click()
Me alegro que lo tengas solucionado.
Sdos
Elsa
PD) No olvides finalizar la consulta para que el foro te permita dejar nuevas en adelante.
Muchas gracias por su respuesta. De momento, y mientras siga funcionando seguiré utilizando varios módulos.. y en cuanto tenga tiempo, buscaré la forma de solucionar el problema que tenía al incluir las macros en un módulo.
Gracias por su tiempo.
Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas