Propiedad Parent.SlicerCaches(1)
Publicado por Diego23 (2 intervenciones) el 25/06/2020 09:01:45
Buenos días.
Una de mis macros tiene el siguiente trozo de código vba relacionado con los slicers de las tablas dinámicas. Esta macro actua sobre diferentes libros excels.
Set slSlicer = wsHoja.Parent.SlicerCaches(1)
'Aquí siguen el conjunto de instrucciones que debe realizar la macro relacionadas con el slSlicer seleccionado, en este caso es el Slicer 1.
El problema es que el slicer sobre el que debe realizar una serie de instrucciones dadas por la macro no es en todos los libros el nº1. En algunos libros excel es el slicer 1, en otros es el 2, en otros el 4, etc.
La información sobre el slicer sobre el que debe actuar la macro la tengo guardada en un vector llamado slicer_cache, slicer_cache=(1, 2, 4, 2). Mi intención es escribir la macro de la siguiente manera pero no funciona:
1) Set slSlicer = wsHoja.Parent.SlicerCaches(slicer_cache)
2) Set slSlicer = wsHoja.Parent.SlicerCaches(slicer_cache (x))
3) a = slicer_cache
Set slSlicer = wsHoja.Parent.SlicerCaches(a)
No funciona ninguna de las 3 maneras. No sé si es por algo que no es correcto, o porque la instrucción Parent.SlicerCaces no se le puede pasar una variable.
La única solución que veo es escribir la macro así:
Si el libro se llama "Libro1" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(1)
Si el libro se llama "Libro2" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(2)
Si el libro se llama "Libro3" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(4)
Si el libro se llama "Libro4" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(2)
¿Alguna solución para escribir el código de la macro de la manera más simple?
Gracias de antemano.
Una de mis macros tiene el siguiente trozo de código vba relacionado con los slicers de las tablas dinámicas. Esta macro actua sobre diferentes libros excels.
Set slSlicer = wsHoja.Parent.SlicerCaches(1)
'Aquí siguen el conjunto de instrucciones que debe realizar la macro relacionadas con el slSlicer seleccionado, en este caso es el Slicer 1.
El problema es que el slicer sobre el que debe realizar una serie de instrucciones dadas por la macro no es en todos los libros el nº1. En algunos libros excel es el slicer 1, en otros es el 2, en otros el 4, etc.
La información sobre el slicer sobre el que debe actuar la macro la tengo guardada en un vector llamado slicer_cache, slicer_cache=(1, 2, 4, 2). Mi intención es escribir la macro de la siguiente manera pero no funciona:
1) Set slSlicer = wsHoja.Parent.SlicerCaches(slicer_cache)
2) Set slSlicer = wsHoja.Parent.SlicerCaches(slicer_cache (x))
3) a = slicer_cache
Set slSlicer = wsHoja.Parent.SlicerCaches(a)
No funciona ninguna de las 3 maneras. No sé si es por algo que no es correcto, o porque la instrucción Parent.SlicerCaces no se le puede pasar una variable.
La única solución que veo es escribir la macro así:
Si el libro se llama "Libro1" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(1)
Si el libro se llama "Libro2" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(2)
Si el libro se llama "Libro3" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(4)
Si el libro se llama "Libro4" entonces Set slSlicer = wsHoja.Parent.SlicerCaches(2)
¿Alguna solución para escribir el código de la macro de la manera más simple?
Gracias de antemano.
Valora esta pregunta


0