【问题标题】:Excel VBA Getting a multiple selection from a listboxExcel VBA 从列表框中获取多项选择
【发布时间】:2016-01-19 00:42:00
【问题描述】:

我有一个设置为 selectmulti 的列表框

我正在尝试通过以下方式获取所选项目的值:

Private Sub CommandButton3_Click()

Dim lItem As Long
Dim nboc As Integer
Dim c As Integer

Range("G:G").Clear
nboc = Worksheets("BDD").Range("IQ2").Value
c = 0
    For lItem = 0 To ListBox2.ListCount - 1
         If ListBox2.Selected(lItem) = True Then
            c = c + 1
            Worksheets("Bordereau Prep").Range("G15:G" & 14 + c) = ListBox2.List(lItem)
            ListBox2.Selected(lItem) = False

        End If
    Next
End Sub

只要我选择了一项,它就可以工作。如果我选择了 x 个项目,它会返回第一个项目的 x 倍。

你能帮帮我吗? (我对 VBA 还很陌生,正在尝试自学)

【问题讨论】:

    标签: vba excel listbox


    【解决方案1】:

    用这一行:

    Worksheets("Bordereau Prep").Range("G15:G" & 14 + c) = ListBox2.List(lItem)
    

    您覆盖了此函数先前打印的值。

    在第一次迭代中,您在 G15:G15 范围内的每个单元格中打印值(在这种情况下为单个单元格),在第二次迭代中,您在 G15:G16 范围内的每个单元格中打印值(因此您覆盖打印在第一次迭代)等等。

    你需要像下面这样改变这一行:

    Worksheets("Bordereau Prep").Range("G14").Offset(c, 0) = ListBox2.List(lItem)
    

    【讨论】:

    • 这正是我想要的
    【解决方案2】:

    你的问题是:

    Worksheets("Bordereau Prep").Range("G15:G" & 14 + c) = ListBox2.List(lItem) 它只是将整个范围分配给最后找到的值。这是适合您的东西,您可以进一步使用它并进行更改。

    Option Explicit
    
    Sub btn()
    
    Dim lItem   As Long
    Dim c       As Long
    
    Range("G:G").Clear
    
    For lItem = 0 To Worksheets("Bordereau Prep").ListBox2.ListCount - 1
        If Worksheets("Bordereau Prep").ListBox2.Selected(lItem) = True Then
            c = c + 1
            Worksheets("BDD").Cells(15 + c, 7) = Worksheets("Bordereau Prep").ListBox2.List(lItem)
            'Worksheets("Bordereau Prep").Range("G15:G" & 14 + c) = Worksheets("Bordereau Prep").ListBox2.List(lItem)
            Worksheets("Bordereau Prep").ListBox2.Selected(lItem) = False
        End If
    Next lItem
    
    End Sub
    

    最后但并非最不重要的一点是,您尽量不要在 VBA 中使用整数,而是使用长整数。尽情享受吧!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多