Casilla de verificacion

12/08/2007 - 23:48 por Daniel Pozzi | Informe spam
Hola, quiero insertar una casilla de verificación (check box) en una hoja,
lo hago desde el menú herramientas/fromularios, y hacer referencia a su
estado desde un módulo de vb.
Me pueden ayudar?
Gracias!
Daniel

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/08/2007 - 00:22 | Informe spam
hola, Daniel !

... quiero insertar una casilla de verificacion (check box) en una hoja
lo hago desde el menu herramientas/fromularios
y hacer referencia a su estado desde un modulo de vb...



el siguiente ejemplo supone que hablamos de su 'indice' [el primero de los checkboxes de formularios en la hoja]
[claro que puedes hacer referencia al nombre, o.. ?]

op1:
MsgBox "Estado de la casilla: " & (Worksheets("hoja1").CheckBoxes(1) = 1)

op2: [haciendo la referencia a la celda a la que esta vinculada]
With Worksheets("hoja1")
MsgBox "Estado de la casilla: " & .Range(.CheckBoxes(1).LinkedCell)
End With

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Daniel Pozzi
13/08/2007 - 03:15 | Informe spam
Ahora estoy usando este código, y no me parece elegante... debería haber
otra manera de hacerlo:

ActiveSheet.Shapes("Check Box 38").Select
If Selection.Value = 1 Then
Cells(2, 39) = "x"
Else
Cells(2, 39) = ""
End If
Cells(2, 27).Select

Estoy seleccionando el shape, y no se si eso es correcto, además luego debo
reposicionar el cursor (Cells(2, 27).Select), no me doy idea de cómo
de-seleccionar el shape.


"Héctor Miguel" escribió en el mensaje
news:
hola, Daniel !

... quiero insertar una casilla de verificacion (check box) en una hoja
lo hago desde el menu herramientas/fromularios
y hacer referencia a su estado desde un modulo de vb...



el siguiente ejemplo supone que hablamos de su 'indice' [el primero de los
checkboxes de formularios en la hoja]
[claro que puedes hacer referencia al nombre, o.. ?]

op1:
MsgBox "Estado de la casilla: " & (Worksheets("hoja1").CheckBoxes(1) = 1)

op2: [haciendo la referencia a la celda a la que esta vinculada]
With Worksheets("hoja1")
MsgBox "Estado de la casilla: " & .Range(.CheckBoxes(1).LinkedCell)
End With

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
#3 Héctor Miguel
13/08/2007 - 04:04 | Informe spam
hola, Daniel !

1) como puedes ver en los ejemplos anteriores, no es necesario *seleccionar* un objeto para tomar/dejar sus propiedades
podrias usar algo +/- como lo siguiente:
Cells(2, 39) = Iif(ActiveSheet.Shapes("Check Box 38").Value = 1, "x", "")

2) no me queda claro por que no quieres vincular el checkbox con la celda 'AM2' -o Cells(2, 39)-
en donde obtendrias verdadero [si la casilla se activa] o falso [cuando no este activada] -?-

3) [solo que] toma en cuenta que no existe evento para detectar de/seleccion/cambios/... en controles de formularios
[ni siquiera usando los *cambios* a las celdas vinculadas]

[probablemente] serviria si expones detalles mas especificos en relacion a lo que *realmente* necesitas resolver -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
Ahora estoy usando este codigo, y no me parece elegante... deberia haber otra manera de hacerlo:
ActiveSheet.Shapes("Check Box 38").Select
If Selection.Value = 1 Then
Cells(2, 39) = "x"
Else
Cells(2, 39) = ""
End If
Cells(2, 27).Select
Estoy seleccionando el shape, y no se si eso es correcto
ademas luego debo reposicionar el cursor (Cells(2, 27).Select), no me doy idea de como de-seleccionar el shape.



__ las consultas anteriores __
... quiero insertar una casilla de verificacion (check box) en una hoja
lo hago desde el menu herramientas/fromularios
y hacer referencia a su estado desde un modulo de vb...



el siguiente ejemplo supone que hablamos de su 'indice' [el primero de los checkboxes de formularios en la hoja]
[claro que puedes hacer referencia al nombre, o.. ?]

op1:
MsgBox "Estado de la casilla: " & (Worksheets("hoja1").CheckBoxes(1) = 1)

op2: [haciendo la referencia a la celda a la que esta vinculada]
With Worksheets("hoja1")
MsgBox "Estado de la casilla: " & .Range(.CheckBoxes(1).LinkedCell)
End With
Respuesta Responder a este mensaje
#4 Daniel Pozzi
13/08/2007 - 05:08 | Informe spam
En mi caso debería funcionar esto:
=si(ActiveSheet.Shapes("Check Box 38").Value = 1;"x"; "") dentro de la celda
en cuestion
pero no funciona, me da error de formula.
NO quiero vincular el checkbok a una celda
el ejemplo 1) me serviria, pero... soy muy burro



"Héctor Miguel" escribió en el mensaje
news:
hola, Daniel !

1) como puedes ver en los ejemplos anteriores, no es necesario
*seleccionar* un objeto para tomar/dejar sus propiedades
podrias usar algo +/- como lo siguiente:
Cells(2, 39) = Iif(ActiveSheet.Shapes("Check Box 38").Value = 1, "x",
"")

2) no me queda claro por que no quieres vincular el checkbox con la celda
'AM2' -o Cells(2, 39)-
en donde obtendrias verdadero [si la casilla se activa] o falso [cuando
no este activada] -?-

3) [solo que] toma en cuenta que no existe evento para detectar
de/seleccion/cambios/... en controles de formularios
[ni siquiera usando los *cambios* a las celdas vinculadas]

[probablemente] serviria si expones detalles mas especificos en relacion a
lo que *realmente* necesitas resolver -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
Ahora estoy usando este codigo, y no me parece elegante... deberia haber
otra manera de hacerlo:
ActiveSheet.Shapes("Check Box 38").Select
If Selection.Value = 1 Then
Cells(2, 39) = "x"
Else
Cells(2, 39) = ""
End If
Cells(2, 27).Select
Estoy seleccionando el shape, y no se si eso es correcto
ademas luego debo reposicionar el cursor (Cells(2, 27).Select), no me doy
idea de como de-seleccionar el shape.



__ las consultas anteriores __
... quiero insertar una casilla de verificacion (check box) en una hoja
lo hago desde el menu herramientas/fromularios
y hacer referencia a su estado desde un modulo de vb...



el siguiente ejemplo supone que hablamos de su 'indice' [el primero de
los checkboxes de formularios en la hoja]
[claro que puedes hacer referencia al nombre, o.. ?]

op1:
MsgBox "Estado de la casilla: " & (Worksheets("hoja1").CheckBoxes(1) =
1)

op2: [haciendo la referencia a la celda a la que esta vinculada]
With Worksheets("hoja1")
MsgBox "Estado de la casilla: " & .Range(.CheckBoxes(1).LinkedCell)
End With






Respuesta Responder a este mensaje
#5 Héctor Miguel
13/08/2007 - 05:40 | Informe spam
hola, Daniel !

En mi caso debería funcionar esto:
=si(ActiveSheet.Shapes("Check Box 38").Value = 1;"x"; "") dentro de la celda en cuestion
pero no funciona, me da error de formula.
NO quiero vincular el checkbok a una celda
el ejemplo 1) me serviria, pero...



1) *ligera* diferencia entre lo que solicitabas inicialmente y lo que expones ahora :D
a) inicialmente solicitabas...
... quiero insertar una casilla de verificacion (check box) en una hoja
lo hago desde el menu herramientas/fromularios
y hacer referencia a su estado desde un modulo de vb...










b) y ahora expones que pretendes usarla como *funcion de hoja de calculo* :-((

2) [entonces]... deberas tener muy presente el siguiente comentario:
3) [solo que] toma en cuenta que no existe evento para detectar de/seleccion/cambios/... en controles de formularios
[ni siquiera usando los *cambios* a las celdas vinculadas]





3) [como la pintas] vas a necesitar de un par de procedimientos y [seguramente] *sacrificar* a tu modelo con algunos re/calculos :-((
OJO los procedimientos van en modulo de codigo normal/general/estandar/...

a) una funcion de usuario:
Function CheckBoxActivado(cbNombre As String) As Boolean
On Error Resume Next ' por si te equivocas con el nombre del checkbox '
Application.Volatile
CheckBoxActivado = (ActiveSheet.CheckBoxes(cbNombre) = 1)
End Function

b) una macro que vas a tener que asignarla a tu/s objetos checkbox/es
Sub ActualizaEstado()
Cells.Calculate
End Sub

=> mediante un clic-secundario a tu/s checkbox/es, seleccionas del menu contextual la opcion de: *asignar macro...*
y le/s asignas la macro anterior [ActualizaEstado]

c) la funcion llamada desde una celda en hoja de calculo [+/- como la que expones]...
=SI(CheckBoxActivado("check box 38");"x";"")

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida