Excel VBA下标越界 如何引用工作簿数组

我的VBA程序如下:Subtest()Dimi,nAsIntegerDims()AsStringn=Application.WorksheetFunction.Count... 我的VBA程序如下:
Sub test()
Dim i, n As Integer
Dim s() As String
n = Application.WorksheetFunction.CountA(Workbooks("Extract_Innatance.xlsm").Worksheets("Index").Range("A:A")) - 2
ReDim s(n, 7) As String
i = 3
For i = 3 To n + 2
s(i, 1) = Application.Workbooks("Extract_Innatance.xlsm").Worksheets("Index").Cells(i, 1)
Range("D5:D765") = Application.Workbooks("Extract_Innatance.xlsm").Worksheets("s(i,1)").Range("B13")
Cells(i + 2, 17) = Range(E2)
Next i

End Sub

调试时候第九行 Range("D5:D765") = Application.Workbooks("Extract_Innatance.xlsm").Worksheets("s(i,1)").Range("B13")
出现下标越界问题,该如何解决?

另外,我想把别的工作簿Extract_Innatance.xlsm中的B13:B773引用到本工作簿的D5:D765,请问该如何修改第九行 Range("D5:D765") = Application.Workbooks("Extract_Innatance.xlsm").Worksheets("s(i,1)").Range("B13")

在线等,非常感谢
展开
 我来答
莫道枉然
推荐于2016-08-13 · 超过25用户采纳过TA的回答
知道答主
回答量:53
采纳率:14%
帮助的人:31.9万
展开全部

一、猜测数组S存放的是工作表名称,Worksheets("s(i,1)")中,数组元素加了双引号,成了文本了,应去掉数组元素的双引号:

Range("D5:D765") = Application.Workbooks("Extract_Innatance.xlsm").Worksheets(s(i,1)).Range("B13")

二、把别的工作簿Extract_Innatance.xlsm中的B13:B773引用到本工作簿的D5:D765

Sub test1()
Dim wb As Workbook
Set wb = GetObject(里面放别的工作簿Extract_Innatance.xlsm的路径)
range("d5:d765")=wb.Sheets(别的工作簿Extract_Innatance.xlsm中的B13:B773所在的工作表名).range("B13:B773")
wb.Close
End Sub
追问
s(i,1)确实是代表工作表名称!!!
我只是想把当前工作簿的D5:D765引用Extract_Innatance.xlsm中的B13:B773即可,不需要另外创建工作簿啊,能否优化一下呢?
追答

getobject不是创建工作簿,第二段代码就是引用

举个例子,在test工作簿中获取Extract_Innatance.xlsx中Index的A1:A10

粘贴到test的B1:B10




ssfx1982
2014-08-14 · TA获得超过2241个赞
知道小有建树答主
回答量:945
采纳率:58%
帮助的人:198万
展开全部
S()这个动态数组第一维的上限就是n,你的S(I,1)从3循环到n+2怎么可能行的通呢?,要引用其他工作簿的数据光修改这行代码也无济于事
追问
给个引用的sub也可以啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8f5fb72
2014-08-14 · 超过23用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:27.2万
展开全部
Extract_Innatance,Index等这几个名称你查看一下是否存在?或者名称是否完全一致?

我之前也是,写程序是对的,却在文件名或sheet名上弄错,正面也查不出来
追问
一定存在的,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式