Vba Listbox2仅显示Listbox1中选定工作簿的工作表

Vba Listbox2仅显示Listbox1中选定工作簿的工作表,vba,excel,Vba,Excel,有两个列表框-Listbox1和Listbox2 我有一个用文件夹中的工作簿填充Listbox1的代码。单击任何工作簿将在列表框2中显示所有相关工作表 Private Sub ListBox1_Click() Dim idx As Long, sName As String Dim bk As Workbook, sh As Worksheet idx = ListBox1.ListIndex sName = ListBox1.List(idx) Application.DisplayAle

有两个列表框-Listbox1和Listbox2

我有一个用文件夹中的工作簿填充Listbox1的代码。单击任何工作簿将在列表框2中显示所有相关工作表

Private Sub ListBox1_Click()

Dim idx As Long, sName As String
Dim bk As Workbook, sh As Worksheet

idx = ListBox1.ListIndex
sName = ListBox1.List(idx)
Application.DisplayAlerts = False

Set bk = Workbooks.Open("D:\Counts\" & sName)
Application.DisplayAlerts = True
For Each sh In bk.Worksheets
    ListBox2.AddItem sh.Name
Next
bk.Close SaveChanges:=False

End Sub

'====================================

Private Sub UserForm_Activate()

   Dim DIRECTORY As String
   'Clear Listboxes
   ListBox1.Clear

   'list directories
   DIRECTORY = Dir("D:\Counts\*.xls", vbNormal)
   Do Until DIRECTORY = ""
        'add filename to listbox
       ListBox1.AddItem DIRECTORY
       DIRECTORY = Dir()
   Loop

End Sub
问题-

代码不断向Listbox2添加工作表

要求-

我希望代码一次显示一个选定工作簿的工作表

所以,如果我单击第一个工作簿,代码将显示与第一个工作簿相关的工作表。如果单击第二个工作簿,代码应该只显示与第二个工作簿相关的工作表,依此类推

要实现这一点,应该更改代码的哪一部分。

您需要

ListBox2.Clear

在您的列表框1中,在for each语句前面单击()子项

感谢您的代码。它起作用了。如何关闭此帖子