TransWikia.com

Listbox selección multiple VBA EXCEL

Stack Overflow en español Asked by HECTOR HIM on December 18, 2021

Agradezco el apoyo que me brinde tengo el siguiente código:

Private Sub CommandButton1_Click()
Dim Uf As Long
Dim lx As Long
With Hoja1
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then

Uf = .Range("O" & Rows.Count).End(xlUp).Row + 1
.Range("O" & Uf) = ListBox1.List(i, 0) 'Columna 1
ListBox1.Selected(i) = False
i = i - 1
Uf = Uf + 1
End If
Next i
End With
End Sub

Este código lo que hace es que selecciona ITEMS de forma multiple y los va registrando en la columna "O" la hoja en Excel; pero necesito que él me pueda almacenar el los ITEMS seleccionados, por ejemplo: 2017-2018-2019 en la columna o fila 1; es decir en la misma fila.

Ahorita, como esta desarrollado, me realiza el registro de la siguiente manera

2017
2018
2019

Estos datos corresponden al cliente uno de la hoja ingreso. Al hacerme ese registro así, me está indicado que al cliente 1 se le vendió x producto en el 2017, al cliente 2 se le vendió x producto en el 2018, etc.

Pero lo real es que la ventas fueron realizadas al cliente 1

Agradezco el apoyo.

2 Answers

jachguate agradecido por la colaboración que me diste ya realice los ajutes utilizando el codigo que me facilitaste y asi quedo el nuevo codigo empleado para mí vba gracia por su apoyo saludos cordiales.

Private Sub CommandButton1_Click()
Dim uf As Long
Dim X As String
Dim Y As String
Dim k As String
   With Hoja1
    For i = 0 To ListBox1.ListCount - 1
      If ListBox1.Selected(i) = True Then
        X = ListBox1.List(i, 0)
        Y = X & " " & Y
        uf = .Range("O" & Rows.Count).End(xlUp).Row + 1
      k = Left(Y, Len(Y))
      ListBox1.Selected(i) = False
        
      End If
   
    Next i
       .Range("O" & uf) = k
   End With
End Sub

Answered by HECTOR HIM on December 18, 2021

Si necesitas que todo quede en la celda O1, lo que puedes hacer es ir guardando el nombre de todos los elementos seleccionados en una variable y finalmente asignarle ese valor a la celda.

Tomando como base tu código, podría ser algo como:

Private Sub CommandButton1_Click()
  Dim ItemsSeleccionados As String
  ItemsSeleccionados = ""
  With Hoja1
    For i = 0 To ListBox1.ListCount - 1
      If ListBox1.Selected(i) = True Then
        ItemsSeleccionados = ItemsSeleccionados & "-" & ListBox1.List(i, 0)
        ListBox1.Selected(i) = False
      End If
    Next i
    .Range("O1") = Left(ItemsSeleccionados, Len(ItemsSeleccionados) - 1)
  End With
End Sub

Si se seleccionó los items que tienen +:

2007 +
2008
2009 + 
2010

Esto dejará el valor 2007-2009 en la celda O1.

Answered by jachguate on December 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP