我正在尝试在Excel VBA中使用Userform
将项目添加到Command Button
中的列表框中。棘手的部分是,如果用户多次单击按钮(多次添加同一项目),则应将所述项目分组。例如,第一个按钮名为cmdItem1
,并以Item 1
作为标题。列表框的名称为lstSaleDetail
,具有两列,其中一列应注册该商品的名称,第二列应注册其数量(从1开始)。
因此,第一次单击任何一个按钮时,都会向列表框中添加一个新行,数量为1。但是,第二次(或其他任何一次)单击同一按钮,而不是添加一个新行行,数量为1,我希望现有行更新并显示数量为2。为此,我尝试了以下代码:
Private Sub cmdItem1_Click()
If lstSaleDetail.ListCount > 0 Then
For i = 0 To (lstSaleDetail.ListCount - 1)
If cmdItem1.Caption = lstSaleDetail.List(i) Then
lstSaleDetail.List(i, 1) = lstSaleDetail.List(i, 1) + 1
Else
lstSaleDetail.AddItem
lstSaleDetail.List(lstSaleDetail.ListCount - 1, 0) = cmdItem1.Caption
lstSaleDetail.List(lstSaleDetail.ListCount - 1, 1) = "1"
End If
Next i
Else
lstSaleDetail.AddItem
lstSaleDetail.List(lstSaleDetail.ListCount - 1, 0) = cmdItem1.Caption
lstSaleDetail.List(lstSaleDetail.ListCount - 1, 1) = "1"
End If
End Sub
这仅在列表框为空时才有效,在这种情况下,代码可以正常工作。但是,如果添加了其他任何项(因此,不止一行),则代码将中断。尽管包含被单击项目信息的第一行继续以应有的方式增加其数量,但是同一项目的新行也被添加,并且这不会发生。关于我的代码可能有什么问题的任何建议?
为澄清起见,我添加了If lstSaleDetail.ListCount > 0 Then
条件,因为否则当列表框为空时,所有代码均不起作用。
答案 0 :(得分:1)
在循环中进行匹配后,您可以立即退出该子项。如果您未通过循环,则没有匹配项,因此请添加为新项:
tf.ENV.set("WEBGL_CPU_FORWARD", true)