elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Macro excel PivotItems propiedad Visible
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Macro excel PivotItems propiedad Visible  (Leído 2,913 veces)
sandri

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Macro excel PivotItems propiedad Visible
« en: 12 Noviembre 2018, 10:17 am »

Buenos días,

Estoy haciendo una macro para q cuando pulsen un botón actualizar tabla dinámica lo que haga es cambiar de la lista desplegable el mes que se quiere filtrar. Para ello lo que hago es deshabilitar todos los campos de la lista desplegable (Enero, Febrero, Marzo....) para luego activar el mes que ha seleccionado el usuario. Copio el código:


mes = Worksheets("Datos Peugeot").Range("AX1").Value
Worksheets("Diego").PivotTables("Diego2").PivotFields("MES ENTREGA").CurrentPage = "(All)"
    With Worksheets("Diego").PivotTables("Diego2").PivotFields("MES ENTREGA")
        .PivotItems("ENERO").Visible = False
        .PivotItems("FEBRERO").Visible = False
        .PivotItems("MARZO").Visible = False
        .PivotItems("ABRIL").Visible = False
        .PivotItems("MAYO").Visible = False
        .PivotItems("JUNIO").Visible = False
        .PivotItems("JULIO").Visible = False
        .PivotItems("AGOSTO").Visible = False
        .PivotItems("SEPTIEMBRE").Visible = True
        .PivotItems("OCTUBRE").Visible = False
        .PivotItems("NOVIEMBRE").Visible = False
        .PivotItems("DICIEMBRE").Visible = False
        .PivotItems(mes).Visible = True
    End With


Cuando me llega al mes que esta en Visible = True me da el siguiente error:

No se puede asignar la propiedad Visible de la clase PivotItems.

Alguien sabe como podría solucionar esto?

Gracias de antemano.


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Macro excel PivotItems propiedad Visible
« Respuesta #1 en: 13 Noviembre 2018, 12:34 pm »

Suponiendo que "AX1" se refiera a una casilla en exclusiva y no a un rango de ellas...

Probablemente, porque el 'mes' pasado (el recogido) no exista como tal...
Puedes hacer dos cosas... la primera es probar si se soluciona con una simple conversión (a mayúsculas), la segunda es investigar si existe...

La primera opción:
Cambia de esto
Código
  1. .PivotItems(mes).Visible = True
a exto:
Código
  1. .PivotItems(ucase$(mes)).Visible = True

Puede que incluso tenga algún espacio delante y/o detrás... así que mejor aún así:
Código
  1. .PivotItems(ucase$(trim$(mes))).Visible = True

Si a pesar de ello da error, intercéptalo:

Código
  1. dim meses as string="ENERO,FEBRERO,...DICIEMBRE"
  2.  
  3. if (instr(meses, mes)>0) then
  4.    .PivotItems(ucase$(trim$((mes))).Visible = True
  5. else
  6.    msgbox "se está intentando pasar por como mes, el texto " & mes & " que no es un miembro reconocido en 'pivotitems' "
  7. end if


Nota que si has copiado y pegado el contenido tal cual lo tienes en tu código, tienes el mes de septiembre a TRUE, seguramente se te ha pasado indicarle FALSE:
Código
  1. .PivotItems("SEPTIEMBRE").Visible = True
  2. end if

Si a pesar de todo te sigue dando error, deberás ofrecer una mejor descripción de PivotItems...


« Última modificación: 13 Noviembre 2018, 12:37 pm por NEBIRE » En línea

sandri

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: Macro excel PivotItems propiedad Visible
« Respuesta #2 en: 13 Noviembre 2018, 14:09 pm »

Gracias por la respuesta NEBIRE.

Creo que me he explicado mal. El error me da en el momento de llegar a un elemento que esta en true (seleccionado) y lo quiero poner en falso. Por ejemplo, tengo seleccionado Septiembre y cuando llego a el y hago esto: .PivotItems("SEPTIEMBRE").Visible = False, es cuando me sale el error.

Con esto: .PivotItems(mes).Visible = True, no tengo problema me lo selecciona correctamente. Es a la hora de deshabilitar (quitar la selección)

Lo último de la NOTA ya lo cambie, se me coló

No se si me he explicado bien
En línea

sandri

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: Macro excel PivotItems propiedad Visible
« Respuesta #3 en: 19 Noviembre 2018, 12:58 pm »

He conseguido solucionarlo, os lo pongo por si a alguien le fuera util.

El problema era poner visible a false a todas las opciones (sin que hubiera ninguna en true) por eso había que poner primero una opción a true y luego todos los demás a false. Pongo el ejemplo:

Worksheets("Diego").PivotTables("Diego1").PivotFields("MES").CurrentPage = "(All)"
    With Worksheets("Diego").PivotTables("Diego1").PivotFields("MES")
        'tengo que controlar el mes para no ponerlo en false
        .PivotItems(mes).Visible = True
        If Not mes = "ENERO" Then
            .PivotItems("ENERO").Visible = False
        End If
        If Not mes = "FEBRERO" Then
            .PivotItems("FEBRERO").Visible = False
        End If
        If Not mes = "MARZO" Then
            .PivotItems("MARZO").Visible = False
        End If
        If Not mes = "ABRIL" Then
            .PivotItems("ABRIL").Visible = False
        End If
        If Not mes = "MAYO" Then
            .PivotItems("MAYO").Visible = False
        End If
        If Not mes = "JUNIO" Then
            .PivotItems("JUNIO").Visible = False
        End If
        If Not mes = "JULIO" Then
            .PivotItems("JULIO").Visible = False
        End If
        If Not mes = "AGOSTO" Then
            .PivotItems("AGOSTO").Visible = False
        End If
        If Not mes = "SEPTIEMBRE" Then
            .PivotItems("SEPTIEMBRE").Visible = False
        End If
        If Not mes = "OCTUBRE" Then
            .PivotItems("OCTUBRE").Visible = False
        End If
        If Not mes = "NOVIEMBRE" Then
            .PivotItems("NOVIEMBRE").Visible = False
        End If
        If Not mes = "DICIEMBRE" Then
            .PivotItems("DICIEMBRE").Visible = False
        End If
    End With


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Propiedad Visible del Form1!!
Programación Visual Basic
Hole_System 6 2,664 Último mensaje 29 Mayo 2008, 16:26 pm
por seba123neo
macro en excel
Programación Visual Basic
tony82 7 6,495 Último mensaje 27 Enero 2009, 00:00 am
por Novlucker
Macro en excel
Programación Visual Basic
tony82 1 1,852 Último mensaje 26 Enero 2009, 20:26 pm
por Karcrack
Duda sobre propiedad Visible de un formulario
Programación Visual Basic
pungados 3 2,412 Último mensaje 14 Julio 2009, 02:39 am
por pungados
Macro en Excel
Programación Visual Basic
ssccaann43 © 1 2,110 Último mensaje 1 Noviembre 2011, 10:45 am
por kimera71
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines