首页 > 解决方案 > 如果选择了特定值,则从列表框集合添加新工作表

问题描述

一些背景:有 2 个工作表,一个包含员工姓名/信息列表,一个包含交付记录(每次交付都是由另一张表上的一名员工完成的)

我已经制作了一个列表框,其中包含第一张纸上的员工姓名。根据列表框中的选择,我想为选定的员工插入一个新工作表,其中列出了他们所做的所有交付(在交付表之外)。列表框中还有一个“所有员工”选项,应该为每个员工插入一张工作表。

标签: excelvbalistboxuserform

解决方案


将“所有员工”选择作为复选框而不是列表框中的值可能会更好——但这只是个人喜好。如果您决定走这条路,您可以使用该CheckBox_Click事件来完全禁用您的列表框(如果已选中)。

无论如何,对于你的实际问题。您可以首先检查您的列表框的值是否 =All Employees使用这行代码:

If Me.ListBox1.Value = "All Employees" Then

一旦您验证了上述内容是正确的,那么您可以获取列表框中项目的总数,.ListCount并循环遍历每个列表项:

For i = 0 To .ListCount - 1

对于循环中的每个项目,请确保您没有添加名为 的工作表All Employees

If .List(i) <> "All Employees" Then

一旦最终测试通过,创建一个新工作表并将其命名为列表框的值:

Private Sub CommandButton1_Click()

    With Me.ListBox1
        If .Value = "All Employees" Then
            Dim i As Long
            For i = 0 To .ListCount - 1
                If .List(i) <> "All Employees" Then
                    ThisWorkbook.Worksheets.Add.Name = .List(i)
                End If
            Next
        End If
    End With

End Sub

我认为当您按下命令按钮时应该检查这一点 - 所以我已将其添加到该特定事件中。


杂项说明

  • 由于您没有提及列表框的名称,因此我ListBox1在代码中使用了通用名称。如果它不同,您将不得不将其更改为实际列表框的名称。
  • CommandButton1如果您按下以填充工作表的按钮名称不同,您可能还必须更新上述代码中的名称。

推荐阅读