ListBox 中的多选值粘贴到另一个 sheet 的不同单元格中

Multi-selection values from ListBox to paste in different cells in another sheet

我有一个带有多选选项的列表框,我需要将所选值(最多 5 个值)粘贴到 sheet 中名为 grid_2 的 5 个不同单元格(每个值需要在不同的单元格中单元格是 Grid_2.range("A1:E1")。 我设法将第一个值粘贴到单元格上,但其他值重复最后一次选择。

我试图在粘贴单元格中选择的 5 个值之前修复我的代码,但现在我只能有 1 个唯一值(单元格“A1”中列表框的第一个选择)和值在单元格“B1”、“C1”等上,将与上次选择的费用相同。但是,我需要将每个选择填充到 1 个单元格中并且没有重复值或重复相同的值。

  Public Sub Select_Bene_Click()
    
     Dim addme As Range, addme1 As Range, addme2 As Range
    Dim x As Integer, y As Integer, Ck As Integer
    
        Set addme = grid_2.Range("A1")
        Set addme1 = grid_2.Range("B1")
        Set addme2 = grid_2.Range("C1")
        Ck = 0
    
             For x = 0 To Me.List_Bene.ListCount - 1
             If Me.List_Bene.Selected(x) Then
             Ck = 1
    
             If addme = "" Then
             addme.Value = Me.List_Bene.List(x, 0)
    
             Else
            addme1.Value = Me.List_Bene.List(x, 0)
    
             If addme1 = "" Then
             addme1.Value = Me.List_Bene.List(x, 0)
    
             ElseIf addme1 <> "" Then
             addme2.Value = Me.List_Bene.List(x, 0)
    
                End If
              End If
       End If
    Next x
  Unload Me
End Sub

尝试将 Public Sub Select_Bene_Click() 中的代码替换为以下代码。希望这能解决问题

Public Sub Select_Bene_Click()

    Dim oWS As Worksheet: Set oWS = ThisWorkbook.Worksheets("Sheet3")   '<- Change sheet name
    Dim iItem As Long, iC As Long: iC = 0
    Dim aRng As Variant: aRng = Array("A1", "B1", "C1", "D1", "E1")     '<- Make sure range is what you want
    
    For iItem = 0 To Me.lstTesting.ListCount - 1                        '<- Change the name of listbox
    
        If Me.lstTesting.Selected(iItem) Then                           '<- Change the name of listbox
            oWS.Range(aRng(iC)).Value = Me.lstTesting.List(iItem)       '<- Change the name of listbox
            iC = iC + 1
            
            If iC > UBound(aRng) Then Exit For
        End If
        
    Next
    
End Sub

增加计数器并使用 grid_2.Range("A1").Cells(1, counter) 来定位您的范围更简单。

 Public Sub Select_Bene_Click()
    
    Dim Target As Range
    Dim x As Long, y As Long, c As Long
    
    Set Target = grid_2.Range("A1")

    For x = 0 To Me.List_Bene.ListCount - 1
    
        If Me.List_Bene.Selected(x) Then
            c = c + 1
            Target.Cells(1, c).Value = Me.List_Bene.List(x, 0)
            
            If c = 5 Then Exit For
        End If
        
    Next x
    
    Me.Hide
End Sub