2015-11-04 117 views
0
Private Sub Add_Click() 
ActiveWorkbook.Worksheets(ComboBox1.Value).Copy Before:=Workbooks(link.Value).Worksheets("Contract") 
End Sub 

这是我100%确定链接和ComboBox1具有我正在查找的值。当试图复制工作表时,“下标超出范围”

有人能告诉我为什么我不断收到错误“下标超出范围”?

+0

如果您使用变量作为参数,则不要在后面添加'.value'。 – findwindow

+0

@findwindow它们不是变量。一个是ComboBox,一个是TextBox。 – Chris

+0

@Davesexcel链接是用户浏览的文件。所以它会像C:\ users \ me \ etc \ Test.xls – Chris

回答

1

的问题来自:

Before := Workbooks(link.Value) 

从您的意见似乎link.value保存文件的全路径名。方法Workbooks(somename)需要somename是一个名称,如Workbooks(test.xls),没有路径。

尝试从浏览对话框中获取没有路径的文件名,并在没有路径的情况下将其提供给此函数。最终,解决它速度快,你可以这样做:

ActiveWorkbook.Worksheets(ComboBox1.Value).Copy Before:=Workbooks(Right(link.Value, Len(link.Value) - InStrRev(link.Value, "\"))).Worksheets("Contract") 

所添加的代码中提取从link.value给出的完整路径的文件名。

+0

现在我得到了一个不同的,很长的错误。 “Excel无法将工作表插入目标工作簿,因为它包含的行或列数少于源工作簿...” – Chris

+0

这意味着它已修复,但您有另一个错误。我认为它本身就值得一个问题,这完全是另一个(有趣)的问题! :) –

+0

在你告诉我我需要文件名后,我实际上已经想出了那段代码。 – Chris

相关问题