Casilla de verificación

01/06/2005 - 14:59 por christian K | Informe spam
Uso casillas de verificación en una columna de un listado excel. Al activar
un autofiltro de cualquier otra columna, se superponen las casillas de
verificación (en una celda se muestra hasta 3 casillas encimadas). ¿Como
corrijo este problema?

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
02/06/2005 - 00:27 | Informe spam
hola, christian !

... casillas de verificacion en... un listado... un autofiltro... se superponen... (en una celda... hasta 3 casillas [...]



-> la 'causa/razon' es que al ocultar el autofiltro las filas donde estan ubicados los objetos [incrustados en la hoja]...
[estos objetos] 'tratan de seguir a su celda' [a su 'nueva ubicacion']
-> una [posible] 'solucion' es que selecciones [todos o uno a uno] los objetos y les modifiques 'propiedades'...
-> [click-derecho o... ctrl+1 o... -menu- formato] y selecciones el 'formato del control...'
-> [ficha] propiedades / [seccion] ubicacion del objeto -> selecciona: 'no mover ni cambiar tamaño con las celdas'
-> toma nota que TODOS los objetos 're-programados' ->permaneceran<- 'visibles' Y en su ubicacion 'original'
[es decir... no se ocultaran al ocultarse sus filas PERO TAMPOCO estaran donde quedaron 'sus' filas] :-(
-> otra 'alternativa' [de entre varias mas] pudiera ser...
usar macros/codigo en algun 'evento' de esa hoja para que se muestren/oculten [segun 'su' fila si oculta o no]
[te pongo una 'propuesta' de codigo al final]

si cualquier duda [o necesitas otro tipo de ayuda]... comentas?
saludos,
hector.
en el modulo de codigo de 'la hoja' ==Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Fig As Shape
For Each Fig In ActiveSheet.Shapes
If Fig.Type = msoFormControl Then
If Fig.FormControlType = xlCheckBox Then _
Fig.Visible = Not Fig.TopLeftCell.EntireRow.Hidden
ElseIf Fig.Type = msoOLEControlObject Then
If Fig.OLEFormat.ProgId = "Forms.CheckBox.1" Then _
Fig.Visible = Not Fig.TopLeftCell.EntireRow.Hidden
End If
Next
End Sub

notas:
como no mencionas de cual barra de herramientas 'vienen' las casillas...
-> la instrucion 'If Fig.Type' se aplicaria si son de la barra de herramientas 'formularios'
-> la instruccion 'ElseIf Fig.Type' se aplicaria si son de la barra de 'cuadro de controles'
'observa' que el codigo utiliza la propiedad 'TopLeftCell' para 'ubicar' en cual celda esta cada casilla
-> si el borde superior-izquierdo del objeto NO 'coincide' [exactamente] con la celda donde 'se ubica visualmente'...
necesitaras modificar para que la celda 'efectiva' sea [quizas]... la inmediata inferior? [del TopLeftCell]...
de: Fig.TopLeftCell.EntireRow.Hidden a: Fig.TopLeftCell.Offset(1).EntireRow.Hidden
-> si hay varias filas inmediatas ocultas [seguramente] habra un 'ligero desfasamiento' con las 'ubicaciones' .-((
Respuesta Responder a este mensaje
#2 christian K
02/06/2005 - 19:12 | Informe spam
Gracias Hector, lo estudiaré el fin de semana.
saludos
Christian

"Héctor Miguel" wrote:

hola, christian !

> ... casillas de verificacion en... un listado... un autofiltro... se superponen... (en una celda... hasta 3 casillas [...]

-> la 'causa/razon' es que al ocultar el autofiltro las filas donde estan ubicados los objetos [incrustados en la hoja]...
[estos objetos] 'tratan de seguir a su celda' [a su 'nueva ubicacion']
-> una [posible] 'solucion' es que selecciones [todos o uno a uno] los objetos y les modifiques 'propiedades'...
-> [click-derecho o... ctrl+1 o... -menu- formato] y selecciones el 'formato del control...'
-> [ficha] propiedades / [seccion] ubicacion del objeto -> selecciona: 'no mover ni cambiar tamaño con las celdas'
-> toma nota que TODOS los objetos 're-programados' ->permaneceran<- 'visibles' Y en su ubicacion 'original'
[es decir... no se ocultaran al ocultarse sus filas PERO TAMPOCO estaran donde quedaron 'sus' filas] :-(
-> otra 'alternativa' [de entre varias mas] pudiera ser...
usar macros/codigo en algun 'evento' de esa hoja para que se muestren/oculten [segun 'su' fila si oculta o no]
[te pongo una 'propuesta' de codigo al final]

si cualquier duda [o necesitas otro tipo de ayuda]... comentas?
saludos,
hector.
en el modulo de codigo de 'la hoja' ==> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Fig As Shape
For Each Fig In ActiveSheet.Shapes
If Fig.Type = msoFormControl Then
If Fig.FormControlType = xlCheckBox Then _
Fig.Visible = Not Fig.TopLeftCell.EntireRow.Hidden
ElseIf Fig.Type = msoOLEControlObject Then
If Fig.OLEFormat.ProgId = "Forms.CheckBox.1" Then _
Fig.Visible = Not Fig.TopLeftCell.EntireRow.Hidden
End If
Next
End Sub

notas:
como no mencionas de cual barra de herramientas 'vienen' las casillas...
-> la instrucion 'If Fig.Type' se aplicaria si son de la barra de herramientas 'formularios'
-> la instruccion 'ElseIf Fig.Type' se aplicaria si son de la barra de 'cuadro de controles'
'observa' que el codigo utiliza la propiedad 'TopLeftCell' para 'ubicar' en cual celda esta cada casilla
-> si el borde superior-izquierdo del objeto NO 'coincide' [exactamente] con la celda donde 'se ubica visualmente'...
necesitaras modificar para que la celda 'efectiva' sea [quizas]... la inmediata inferior? [del TopLeftCell]...
de: Fig.TopLeftCell.EntireRow.Hidden a: Fig.TopLeftCell.Offset(1).EntireRow.Hidden
-> si hay varias filas inmediatas ocultas [seguramente] habra un 'ligero desfasamiento' con las 'ubicaciones' .-((



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida