Al respecto me han surgido varias inquietudes:
1) Como hago o por donde, puedo saber o conocer el nombre de cada
botón?
2) Puedo cambiar el nombre de los botones por el que yo quiera
(siempre y cuando sea coherente)?
3) Como puedo hacer para que de manera automática (supongo que con una
macro), cada vez que alguien utilice esa hoja, encuentre todos los
botones limpios; es decir con su "Valor sin activar", el que se
encuentra en la pestaña "Control" del "Formato de control"
La grabadora de macros me provee el siguiente código, pero al
ejecutarlo limpia los botones de un solo cuadro de grupo:
Sub LimpiarBotones()
' Grabada el 13-05-2010 - ElProfe
ActiveSheet.Shapes("Option Button 21").Select
With Selection
.Value = xlOff
.LinkedCell = ""
.Display3DShading = True
End With
ActiveSheet.Shapes("Option Button 43").Select
With Selection
.Value = xlOff
.LinkedCell = ""
.Display3DShading = True
End With
ActiveSheet.Shapes("Option Button 31").Select
With Selection
.Value = xlOff
.LinkedCell = ""
.Display3DShading = True
End With
End Sub
Bueno, eso era todo. Gracias anrticipadas por los que se interesen en
el tema y por la ayuda que me puedan brindar.
Miestras esperaba alguna luz sobre mis inquietudes, encontré lo
siguiente:
1) Como hacer para conocer el nombre que tiene cada botón?
-Encontré tes posibilidades, a saber:-
R1a) La más sencilla; al momento de crear el botón desde la "Barra de
Herramientas - Formularios", el botón mismo aparece con el nombre
"Botón de opción XX", donde XX es un número consecutivo que se
incrementa en la medida en que se van creando mas botones.
R1b) Si el botón ya está creado y le habíamos cambido el nombre,
hacemos clic derecho sobre el, para seleccionar el botón (que se vea
su contorno que es como una dina malla) y mientras tanto en la parte
superior izquierda de la hoja de Excel, justo en el espacio destinado
al "Cuadro de nombres" se alcansa a apreciar parte del nombre original
del boton (una limitación visual del campo mismo para no quitarle
capacidad a la barra de fórmulas), donde se alcansa a leer algo así
como "Botón de opci...", pero al hacer clic dentro del "Cuadro de
nombres" se conoce el nombre completo del botón seleccionado.
R1c) Si el botón ya está creado y hemos cambido su nombre, hacemos un
clic derecho sobre el, para seleccionar el botón y luego vamos a
[Insertar][Nombre][Definir] y en la caja de dialogo "Definir nombre",
en la sección "Se refiere a:", figura el nombre completo del botón
seleccionado.
2) Como hacer para cambiar el nombre de un botón?
R2) "blanco es, gallina lo pone y frito se come"; como el refrán, si
la respuesta de R1b) habló del "Cuadro de nombres", pues bastaría
seleccionarlo como ya se dijo y allí mismo en el "Cuadro de nombres"
podemos renombrarlo a nuestro gusto o necesidad.
3) Como hacer para que al inicio, los botones queden limpios
automáticamente?
R3) definitivamente el problema era conocer el nombre del botón y una
vez identificado este, pues hice un código (de los simples porque de
VBA no se nada!), que más o menos es como sigue:
Sub Blanqueador()
' Colocamos botones de opción en blanco
' Botón Pregunta 1
ActiveSheet.Shapes("Botón 01").Select
With Selection
.Value = xlOff
End With
ActiveSheet.Shapes("Botón 02").Select
With Selection
.Value = xlOff
End With
ActiveSheet.Shapes("Botón 03").Select
With Selection
.Value = xlOff
End With
' Botón Pregunta 2
ActiveSheet.Shapes("Botón 04").Select
With Selection
.Value = xlOff
End With
ActiveSheet.Shapes("Botón 05").Select
With Selection
.Value = xlOff
End With
End Sub
...y listo! Eso era todo.
Supongo que "mi código se puede hacer más simple o más práctico", pero
en lo que a mi respecta, funcionó bien y conseguí mi objetivo.
Gracias a todos y reciban un cordial saludo desde Bogotá.
ElProfe
> ... al momento de crear el boton desde la "Barra de Herramientas - Formularios"
> ... aparece con el nombre "Boton de opcion XX"
> donde XX es un n�mero consecutivo que se incrementa en la medida en que se van creando mas botones.
la "xx" corresponde al numero secuencial que se incrementa con cada objeto incrustado (sin importar su tipo) p.e.:
al incrustar un boton de opcion, una casilla de verificacion, un cuadro de grupo, un boton y otro boton de opcion
obtienes las siguientes "xx":
- boton de opcion 1
- casilla de verificacion 2
- cuadro de grupo 3
- boton 4
- boton de opcion 5 (aunque solo hay DOS botones de opcion)
> 3) Como hacer para que al inicio, los botones queden limpios automaticamente?
> R3) definitivamente el problema era conocer el nombre del bot�n y una vez identificado este
> pues hice un codigo (de los simples porque de VBA no se nada!), que mas o menos es como sigue: ...
> Supongo que "mi codigo se puede hacer mas simple o mas practico"
> pero en lo que a mi respecta, funciono bien y consegui mi objetivo...
es lo bueno de excel y vba, que al final de cuentas NO es tan "dificil" como pareciera :))
hablando de objetos de la barra de herramientas "formularios", tambien corresponden a "grupos"
y puedes "blanquear" (p.e.) todos los botones de opcion con una linea +/- como la situiente:
activesheet.optionbuttons.value = false
saludos,
hector.
Muy valiosos tus comentarios.
...
> obtienes las siguientes "xx":
> - boton de opcion 1
> - casilla de verificacion 2
> - cuadro de grupo 3
> - boton 4
> - boton de opcion 5 (aunque solo hay DOS botones de opcion)
R = No me había puesto a detallarlo, pero me ayudó bastante tu
claridad sobre este aspecto.
...
> activesheet.optionbuttons.value = false
R = "Mi limpiador" primario tomaba mas de 200 líneas :(
En estos días alguien me sugirió amablemente que podría simplificarlo
por..
Sub change_status()
Dim sh As Shape
On Error Resume Next
For Each sh In ActiveSheet.Shapes
sh.Select
Selection.Value = xlOff
Next sh
On Error GoTo 0
End Sub
...y ahora tu código simplifica mucho más la tarea.
Héctor Miguel, ¿para "limpiar" un ComboBox también hay una instrucción
así de sencilla?
Gracias por tu interés y por todo tu apoyo.
Saludos,
Manuel
ElProfe