Vb list box

¿Cómo le hago para que la información que esta disponible(que se esta miostrando en un list box) pueda copiarse. Es decir como un copy paste en el ambiente windows ya sea al darle doble clic en el renglón que muestre el listbox.
Te agradecería mucho. No me falles.

2 respuestas

Respuesta
1
Para interactuar con datos de otras aplicaciones, tienes que utilizar el portapapeles, por ejemplo si en el evento doble click de un list box quieres enviar la linea seleccionada al portapapeles pones algo así:
Private Sub List1_DblClick()
ClipBoard.SetText = List1.Text
End Sub
Así te queda en el protapapeles la linea seleccionada, para leer desde el portapapeles utilizas esto:
Texo1 = ClipBoard.GetText
También puedes copiar imágenes si utilizas SetData y GetData
Me manda el siguiente mensaje:
Compile error:
Argument not optional
No funciona como me dijiste y me puedes enviar también, un ejemplo con una imagen que se muestra en visual basic como la copio al darle doble clic.
Pero recuerda que mi idea, lo que yo requiero, es que al darle doble clic sobre el renglón que este seleccionando del list box me lo copie y al darle con el botón derecho del mouse o con la opción de pegar de cualquier menú edición del ambiente windows me lo pegue el texto que escogí al darle doble clic.
Espero que puedas resolverlo.
Lo mismo sucedería para pegar la imagen.
Gracias
Proba con paretesis en la declaración:
Private Sub List1_DblClick()
ClipBoard.SetText (List1.Text)
End Sub
esto es igual en un Picturebox
Private Sub Picture1_DblClick()
ClipBoard.SetData (Picture1.Picture)
End Sub
Respuesta
1
El siguiente código asociado a un botón del formulario, vuelca el contenido de un listbox a partir de la celda que le indiques en la variable "CeldaIni":
Private Sub CommandButton3_Click()
Dim CeldaIni As Range
'=== Gerson, indica aquí cual es la celda inicial para volcar cada elemento del listbox:
Set CeldaIni = Range("E7")
'=========================
For dato2 = 0 To ListBox1.ListCount - 1
Pegadato = ListBox1.List(dato2)
If IsEmpty(CeldaIni) Then
CeldaIni.Value = Pegadato
ElseIf CeldaIni.End(xlDown).Row > 50000 Then
CeldaIni.Offset(1).Value = Pegadato
Else
CeldaIni.End(xlDown).Offset(1).Value = Pegadato
End If
Next dato2
End Sub
Espero que esto te satisfaga.
Un abrazo!
Fernando
Pd: Disculpa la demora pero estoy bastante atareado de trabajo y tu pregunta me demandaba algún tiempo de desarrollo. Chau!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas