使用Excel 2013 vba访问多个工作表

我有3个工作表,我有数据。主工作表有一个名为Lists ,包含combobox的各种列表工作表。 我试图使列表dynamic,即有能力添加条目,并让他们显示下一次用户转到用户窗体上的combobox。

我有这个代码,只要我在正确的工作簿的Lists表,这工作正常:

  ThisWorkbook.sheets("Lists").Range("I1", Range("I" & Rows.Count).End(xlUp)).Name = "DriverList" 

但是,如果我在另一个工作表或另一个工作簿(都在同一个目录中),我得到一个

运行时错误#1004。

我已经尝试了以下两条线,但都没有成功:

 dim spath, sfile as string dim wbCharityBins as Workbook spath = "Z:\Charity Bins 2015 Test Data\" sfile = "Charity Bins 2015 - test.xlsm" Set wbCharityBins = Workbooks.(spath & sfile) wbCharityBins.sheets("lists")... etc 

要么

 Workbooks(spath & "Charity Bins 2015 - test.xlsm").sheets("Lists").Select 

这两个尝试给:

下标超出范围,错误9

我有一个初始化例程,打开所有的工作簿之前,我遇到了上述问题,所以工作簿是开放的。

有关如何从另一个工作表或工作簿访问工作表的任何build议,将不胜感激。

问题是Range("I" & Rows.Count).End(xlUp)它引用了ActiveSheet的范围,而不是“Lists”。

可能的scheme

  With ThisWorkbook.Sheets("Lists") .Range("I1", .Range("I" & Rows.Count).End(xlUp)).Name = "DriverList" End With 

初始testing看起来不错。 问题出现了,因为它是一个dynamic的组合列表? 当只传递一个用户表单文本框的数据时,我应该可以使用:

workbookx.sheets(“y”)。range(“a1”)= userformTextBoxContents。

记住所有的工作簿都是开放的。