Casilla de verificación asignada a celda sobre la que está.

14/10/2004 - 19:09 por Donca | Informe spam
Hola:

Quiero hacer lo siguiente, y debido a que estoy a cero absoluto en comandos
de VB, no sé cómo hacerlo.

Sitúo una casilla de verificación, sobre la celda B2, y quiero que cuando la
casilla esté activada, en B2 me aparezca "VERDADERO". Hasta ahí llego :). El
problema viene cuando selecciono la celda B2, y la arrastro hacia abajo, con
la intención de que la casilla de verificación, vaya cambiando de celda
vinculada a medida que arrastro. Es decir, que quisiera que después de
arrastrar la celda B2 con su casilla de verificación hacia abajo, la casilla
de verificación que se ha creado sobre la celda B13, esté vinculada a la
celda B13, y no a la B2. He quitado los singos "$" de dirección absoluta
antes de arrastrar, pero el resultado no es correcto.

Gracias por llegar hasta aquí, y me decís si es que no he sido capaz de
explicar una cosa que supongo que será muy sencilla.
Saludos,
Donca.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/10/2004 - 08:17 | Informe spam
hola, Donca !

... una casilla de verificacion, sobre la celda B2
... selecciono ... B2, y la arrastro hacia abajo ... que la casilla ... vaya cambiando de celda vinculada [...]



[seguramente] la casilla la incrustaste usando la barra de herramientas 'formularios'
[si es de 'cuadro de controles'... necesitaras estar en 'modo de diseño' para poder 'copiarlas' con las celdas]
[hasta donde se] se requiere codigo para modificar la propiedad 'linkedcell' usando la propiedad 'topleftcell'
suponiendo que el borde superior del control 'coincide' con [o queda 'dentro' de] la celda a la que se 'vincula'...
en un modulo de codigo 'normal' ==Sub VincularCasillas()
Dim Casilla As CheckBox
For Each Casilla In ActiveSheet.CheckBoxes
Casilla.LinkedCell = Casilla.TopLeftCell.Address
Next
End Sub

o... si fue con la barra de herramientas 'cuadro de controles'...
Dim ChkBox As OLEObject
For Each ChkBox In ActiveSheet.OLEObjects
If ChkBox.ProgId = "Forms.CheckBox.1" Then
ChkBox.LinkedCell = ChkBox.TopLeftCell.Address
End If
Next

-> si el borde superior del control [realmente] esta 'sobre' la celda superior...
cambia la propiedad 'topleftcell' a... TopLeftCell.Offset(1).Address

saludos,
hector.
Respuesta Responder a este mensaje
#2 Donca
15/10/2004 - 10:01 | Informe spam
Muchas gracias, Héctor Miguel, pero creo que esto me supera. Pensé que se
podría hacer sin código.
Saludos,
Donca.
"Héctor Miguel" escribió en el mensaje
news:
hola, Donca !

> ... una casilla de verificacion, sobre la celda B2
> ... selecciono ... B2, y la arrastro hacia abajo ... que la casilla ...


vaya cambiando de celda vinculada [...]

[seguramente] la casilla la incrustaste usando la barra de herramientas


'formularios'
[si es de 'cuadro de controles'... necesitaras estar en 'modo de diseño'


para poder 'copiarlas' con las celdas]
[hasta donde se] se requiere codigo para modificar la propiedad


'linkedcell' usando la propiedad 'topleftcell'
suponiendo que el borde superior del control 'coincide' con [o queda


'dentro' de] la celda a la que se 'vincula'...
en un modulo de codigo 'normal' ==> Sub VincularCasillas()
Dim Casilla As CheckBox
For Each Casilla In ActiveSheet.CheckBoxes
Casilla.LinkedCell = Casilla.TopLeftCell.Address
Next
End Sub

o... si fue con la barra de herramientas 'cuadro de controles'...
Dim ChkBox As OLEObject
For Each ChkBox In ActiveSheet.OLEObjects
If ChkBox.ProgId = "Forms.CheckBox.1" Then
ChkBox.LinkedCell = ChkBox.TopLeftCell.Address
End If
Next

-> si el borde superior del control [realmente] esta 'sobre' la celda


superior...
cambia la propiedad 'topleftcell' a... TopLeftCell.Offset(1).Address

saludos,
hector.

Respuesta Responder a este mensaje
#3 Héctor Miguel
15/10/2004 - 10:21 | Informe spam
hola, Donca !

... creo que esto me supera [...]



no estes 'tan seguro'... [creo que] es un codigo bastante sencillo y 'amigable'
... haz la prueba y [de paso] averiguas 'que y como' es que 'lo va haciendo' ;)

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Donca
18/10/2004 - 18:17 | Informe spam
"Héctor Miguel" escribió en el mensaje
news:eAGF1$
hola, Donca !

> ... creo que esto me supera [...]

no estes 'tan seguro'... [creo que] es un codigo bastante sencillo y


'amigable'
... haz la prueba y [de paso] averiguas 'que y como' es que 'lo va


haciendo' ;)

¿comentas?
saludos,
hector.



Hola de nuevo, Héctor Miguel. Gracias por tu insistencia. Por ella,
continúo, aunque me da un poco de vergüenza :), por que estoy realmente a 0
en código, y sé que aquí lo controla casi todo el mundo.

Te digo lo que hago:

Herramientas / Macro / Editor de Visual Basic.

Allí pego (en "General") el siguiente código que tú me has pasado:

Sub VincularCasillas()
Dim Casilla As CheckBox
For Each Casilla In ActiveSheet.CheckBoxes
Casilla.LinkedCell = Casilla.TopLeftCell.Address
Next
End Sub

Cierro todo, para asegurarme de que no hay errores de texto, vuelvo a abrir,
y... no funciona: arrastro la celda que contiene la casilla de verificación,
y la información de la casilla "Vincular con la celda", se sigue tratando
como absoluta, es decir que todas las casillas de verificación que se han
creado al arrastrar, siguen teniendo como referencia la misma celda, y no se
van cambiando a medida que arrastro la celda, como es mi deseo.
Saludos,
Donca.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida