Copiar el texto de un botón, para una subrutina

Hola y gracias anticipadas:
Desearía poder copiar el texto de un botón, a una celda determinada. Para sobre esta poder hacer una formulación de Indice/Coincidir.
Me encuentro con la pega de que habitualmente y cuando lo intento hacer, me reseña el nº del botón y determina como fijo el texto a copiar. Y yo lo que deseo es que la subrutina me sirviera para cualquier botón (tengo una barbaridad de ellos, en un menú selectivo) y para cualquier texto que pudiera tener el botón.
Resumiendo, poder pegar el texto (cualquier texto) de un botón (cualquier botón) a una celda.
Para al crear la macro para cada botón, poder introducir la misma subrutina.
Gracias sinceras y recibir un saludo

1 Respuesta

Respuesta
1
Si me atengo al titulo de tu consulta, la respuesta son estas instrucciones para un botón dibujado con la barra de Formulario:
'seleccionar un botón
ActiveSheet.Shapes("Button 61").Select
'mover a celda el texto de un botón seleccionado
Range("C16").Value = Selection.Text
El resto de tus comentarios no me ha quedadao muy en claro... si necesitas algo más escribime un ejemplo concreto.
Hola Elsa:
'seleccionar un botón
ActiveSheet.Shapes("Button 61").Select
A esto me refería cuando os comentaba que siempre da un valor fijo. (Cosa que yo no quiero... sino que sea genérico, para que la misma subrutina sirva para todos los botones)...
Y lo de pegar el valor de una selección, ya me sabía como... lo gordo es encontrar una sentencia que "seleccione" y "copie", el texto de ese mismo botón, sin darle tampoco un valor determinado.
Seguiré buscando...
Muchas gracias... por tu tiempo.
Si doy con la solución ya os lo comentaré.
Saludos.
(En cuanto leas esto daré la cuestión por finalizada)
Ya comprendo... no la finalices aún así podemos seguir en contacto por si encontramos alguna solución.
Hola de nuevo Elsa:
Lo primero y antes de nada, agradecer tu interés y paciencia... Siguiendo tu comentario, no cerraré de momento el tema, en la esperanza de que se nos encienda la lucecita.
De momento, creo que ya tengo la 2ª parte, la de poder copiar y pegar un texto genérico de cualquier botón a una celda determinada, creo que podría ser así (al menos de momento, me está funcionando):
Sub Copia_texto_boton
...
Selection.Characters
With Selection.Characters(Start:=1, Length:=5).Font
.Name = "Arial"
.FontStyle = "Negrita"
.Size = 12
.ColorIndex = 7
End With
Range("F3").Select
ActiveSheet.Paste
End Sub
Ahora me faltaría el poder encontrar una sentencia, para que al pulsar el botón (cualquier botón), se seleccionara el mismo sin hacer reseña de que botón es, para con la 2ª parte, seleccionar su texto y pegarla a una celda.
Todo ello quedaría nombrado, por ejemplo como Sub Copia_texto_boton(), pudiendo utilizar la rutina, como línea:
Copia_texto_boton
En cada uno de los botones que tengo creados. De esta manera y según que botón pulsemos, en otras celdas, donde tengo incluida una función "indice/coincidir" (que es muy parecida al "buscarV"), me dará una serie de valores diferentes.
Espero no haberme "enrrollado" mucho y haber aclarado un poco más el sentido de la Subrutina que ando poder crear, con vuestra ayuda.
Sinceras gracias y un saludo. Juan Carlos
Parece que estamos trabajando en lo mismo...
Lo que te adjunto funciona con botones dibujados con la barra Formulario pero no con la de Cuadro de controles... te dejo para que lo sigas investigando.
Colocá en un módulo esta rutina que te devolverá en la celda activa el nbre del botón que presiones:
Sub NbreText()
'busca quién lo llamó
Dim nbre
Select Case TypeName(Application.Caller)
Case "Range"
nbre = Application.Caller.Address
Case "String"
nbre = Application.Caller
Case "Error"
nbre = "Error"
Case Else
nbre = "desconocido"
End Select
'coloca en celda el nbre del botón
Activecell.Value = nbre
End Sub
Cada vez que dibujes un botón asocialo con esta rutina.
Ya estamos cerca Elsa, me consta.
Con lo que me has facilitado, ya me da el nombre del botón (boton1... boton10...), sea cual fuere, el botón desde el que ejecute la sentencia... y es lo que copia en la celda que tengamos activada.(Bien!)
Ahora solo falta que en vez del nombre del botón, podamos copiar su texto.(El que con anterioridad le hallamos dado)
Muchas gracias Elsa por todo... seguimos en contacto, yo sigo trabajando en ello.
Un saludo - Juan Carlos
Si, las instrucciones dadas anteriormente fueron para que trabajes con la propiedad Caller y sigas investigando ya que era tarde para mí... pero aquí va completa y ajustada (para botones de la barra Formulario):
Sub nbreText()
Dim nbreBot, nbreText
'busca quién lo llamó
nbreBot = Application.Caller
'ActiveSheet.Shapes(nbreBot).Select
nbreText = Selection.Text
Range("F3").Select
ActiveCell.Value = nbreText

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas