Hola pipo11,
Vamos primero con tu codigo:
pipo11";p="24067 escribió:...el checkbox... del cuadro de controles...
... el código... me da error...
Dim pepe As Boolean
Sub Irahoja1()
pepe = checkbox1.Value
Sheets("hoja1").Select
pepe = True
Range("A1").Select
End Sub
Problemas por orden de gravedad:
Problema 1: Usas una referencia al objeto no calificada (sin indicar la hoja). Aqui debe ocurrir una de las dos cosas siguientes:
a) si el codigo se encuentra en el modulo de la hoja desde la cual se va a la hoja1, entonces Excel interpreta que el control CheckBox1 se encuentra en la hoja en cuyo modulo esta el codigo (es como si usaras Me.CheckBox). Si no hay ningun CheckBox1 en la hoja de partida, te dara el error Object Required (o lo mismo en castellano)
b) si el codigo se encuentra en un modulo estandar (p.ej. Modulo1), entonces Excel interpreta que el control CheckBox1 se encuentra en la hoja activa (es como si usaras ActiveSheet.CheckBox). Si no hay ningun CheckBox1 en la hoja activa (o sea la hoja de partida), te dara el error Object Required (o lo mismo en castellano)
Problema 2: El que le asignes a la variable pepe el valor del CheckBox1
pepe = checkbox1.Value
no quiere decir que le hayas asignado el objeto CheckBox1 a dicha variable (si ademas es del tipo Boolean y no Objeto o Shape o OLEObject , etc.). Si tuvieras que asignar el objeto deberias hacerlo parecido a lo siguiente:
Dim pepe as Shape
Set pepe = CheckBox1
Pero en este caso no es necesario (v. el codigo al final del mensaje). Total que la siguiente linea de tu procedimiento:
pepe = True
solo asigna el valor a la variable del tipo Boolean llamada pepe, pero no afecta al propio control CheckBox1 para nada.
Problema 3: Al declarar la variable pepe a nivel de modulo, esta se conserva entre las ejecucione de procedimientos y ocupa memoria [posiblemente] sin necesidad alguna.
Problema 4: En un codigo tan corto y sin uso repetido de la variable pepe, su uso es redundante ya que no hace sino anadir: dos lineas al codigo (sin ahorrar u optimizar nada) y ocupar memoria.
Solucion: Prueba el siguiente codigo:
- Código: Seleccionar todo
Sub Irahoja1()
With Sheets("Hoja1")
.Select
.CheckBox1 = True
End With
End Sub