Concatenar según optionbutton con label

Para el Sr.Dante:

Hola, haber si me explico bien a la primera, lo que pretendo es que según seleccione un OptionButton1 el label que está a su derecha se “active”, en dicho label está escrito un nombre de persona. Una vez esto, yo tenga en el portapapeles lo siguiente “le ha atendido Carmelo Fines”, con el fin de pegarlo en otro lugar.

Lo primero “le ha atendido” siempre estará, lo que varia es el nombre de la persona la cual selecciono según el OptionButton1 seleccionado.

Lo tengo dentro de un userform.

Creo que con una “foto” pueda quedar más claro.

Saludos y como siempre muchas gracias.

1 Respuesta

Respuesta
1

H o l a:

Está clara la explicación. Lo que creo es que no es práctico hacerlo de esa forma.

Primero, cada optionbutton, tiene una propiedad que se llama Caption, por lo que ya no sería necesario utilizar los controles Label:


Ahora para el código, tendrías que poner lo siguiente para cada optionbutton:

Private Sub OptionButton1_Click()
'Por.Dante Amor
    [H14] = "Le ha atendido " & OptionButton1.Caption
End Sub
'
Private Sub OptionButton2_Click()
'Por.Dante Amor
    [H14] = "Le ha atendido " & OptionButton2.Caption
End Sub
'
Private Sub OptionButton3_Click()
'Por.Dante Amor
    [H14] = "Le ha atendido " & OptionButton3.Caption
End Sub

Si tienes 15 nombres, tendrías que poner 15 veces el evento Click.


Te sugiero utilizar el control Listbox.

Primero, en una hoja tienes que poner los nombres:

En el formulario creas un control Listbox y se vería de esta forma:


El código sería:

Private Sub ListBox1_Click()
'Por.Dante Amor
    Set h = Sheets("Hoja1") 'Hoja donde vas a poner el mensaje
    h.[H14] = "Le ha atendido " & ListBox1 '.List(ListBox1.List)
End Sub
Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h = Sheets("Hoja3") 'nombre de la hoja con los nombres
    ListBox1.ListStyle = 1
    ListBox1.RowSource = h.Name & "!A2:A" & h.Range("A" & Rows.Count).End(xlUp).Row
End Sub

Con esto podrías poner 30 nombres y no tendrías que crear un optionbutton ni un label por cada nombre.


Bueno, ahí tienes las 2 soluciones.

¡Gracias! Me parece estupendo tu sugerencia, lo voy a probar (la opción 2) y te cuento. Gracias de nuevo

R ecuerda valorar la respuesta. G r a c i a s

Hola de nuevo, en cuanto a cargar el ListBox1, el resultado aparte de practico es el correcto, funciona muy bien y no importa el número de nombres que se puedan ir aumentando. Gracias

En cuanto al siguiente propósito " llevarme en el portapapeles el resultado de la leyenda  Le ha atendido Antonio" no funciona como yo lo necesito, solo pretendo que se quede en el portapapeles, yo lo tengo que importar a otro programa y pegarlo alli y en algunos casos en otras hojas y celdas diferentes. Debe funcionar como si utilizamos "copiar y pegar", solo que lo pego en muchas ocasiones en un lugar fuera de excel.

Prueba con esto:

Private Sub ListBox1_Click()
'Por.Dante Amor
    Set h = Sheets("Hoja1") 'Hoja donde vas a poner el mensaje
    h.[H14] = "Le ha atendido " & ListBox1 '.List(ListBox1.List)
    h.[H14].Copy   'Se pone en el portapapeles
End Sub

O con esta:

Private Sub ListBox1_Click()
'Por.Dante Amor
    Dim miPortapapeles As New DataObject
    MiPortapapeles.SetText "Le ha atendido " & ListBox1 '. List(ListBox1. List)
    MiPortapapeles. PutInClipboard
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas