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

时间:2017-01-25 06:50:26

标签: vba excel-vba excel

有2个列表框 - Listbox1和Listbox2

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

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添加工作表

要求 -

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

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

为了达到这个目的,应该改变代码的哪一部分。

1 个答案:

答案 0 :(得分:0)

你需要一个

ListBox2.Clear

在每个语句之前的ListBox1_Click()子句中