VBA中满足条件时在if语句中退出循环

时间:2020-11-02 00:53:35

标签: excel vba

我正在尝试在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条件,因为否则当列表框为空时,所有代码均不起作用。

1 个答案:

答案 0 :(得分:1)

在循环中进行匹配后,您可以立即退出该子项。如果您未通过循环,则没有匹配项,因此请添加为新项:

tf.ENV.set("WEBGL_CPU_FORWARD", true)