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

时间:2015-04-10 21:05:09

标签: excel vba excel-vba combobox worksheet

我有3个工作表,我有数据。主工作表有一个名为Lists的工作表,其中包含各种组合框列表。我正在尝试使列表动态化,即能够添加条目并在下次用户转到用户表单上的组合框时显示它们。

我有这个代码,只有当我在正确的工作簿的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

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

有关如何从其他工作表或工作簿访问工作表的任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

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

可能的解决方案:

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

答案 1 :(得分:0)

初步测试看起来不错。问题出现了,因为它是一个动态的组合列表?如果只是从userform文本框传递数据,我应该只能使用:

workbookx.sheets(" y")。range(" a1")= userformTextBoxContents。

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