1这一句有错误:wbsheet(i)activate,应该是:wbsheets(i)activate。但是,即便你纠正了错误,但这一句就有可能“下标越界”,比如有一个工作薄只有3个表,你这样wbsheet(4)activate就越界了。
2这个arr1是个变体型,不一定就是数组。比如F列只有F2单元格有数据,下面没有了,那么arr1就不是一个二维数组,而是只包含一个值(F2的值)的变量;只有当F列从F2往下有超过1个的数据时,arr1才是一个二维数组。
3当arr1不是数组的时候,你这样调用就越界了:arr1(j)。即便arr1是数组,你这样调用也会越界,因为arr1它是一个“二维数组”,不能像一维数组那样使用。也就是说不管arr1是不是数组,arr1(j)都是越界的。
4因为arr1和arr2都是同样大小的,只是一个表示一列数据,另一个表示一行数据。所以resize的时候就这样就行:(ubound(arr1),1),而不需要(ubound(arr1)+1,1)
Worksheet("库存源数据")少了s,应为:Worksheets("库存源数据")
Range("a2", Cells(RowsCount, "g")End(xlUp))引用区域语法错误,应为:Range("a2:G" & Cells(RowsCount, "g")End(xlUp)Row)
修改后为:
Sub 物料匹配及管理()
Dim k%, i%, n%, arr
k = k + 1
arr = Worksheets("库存源数据")Range("a2:G" & Cells(RowsCount, "g")End(xlUp)Row)
For i = 1 To UBound(arr)
If arr(i, 1) = Worksheets("图书馆物料管理系统")Cells(k, 1) Then
n = n + 1
Worksheets("图书馆物料管理系统")Cells(n + 1, "b")Resize(1, 7) = WorksheetFunctionIndex(arr, i, 0)
End If
Next
End Sub
部分代码有误,修正参考如下:
Public Sub 自动记录调查数据()
Dim temp As Integer
Dim count As Integer
temp=Sheets("数据表")[A1]CurrentRegionRowscount
count = temp - 3 '
Sheets("问卷")Select
Range("A50:H50")Select
SelectionCopy '
Sheets("数据表")Activate
Rows(temp + 1)Select
ActiveSheetPaste
Cells(temp + 1, 13)Value = count + 1
Sheets("问卷")Select
ApplicationCutCopyMode = False
MsgBox "记录已成功保存,谢谢!", vbOKOnly, "确定"
End Sub
希望能帮上忙!
错误出现在sheet1
sheet1不是vba(excel)内置对象,想访问工作簿中的工作表,应用sheets对象,访问方法为
sheets(index\sheetname)
比如需要访问名称为Sheet1的工作表,应该用sheets(“Sheet1"),也可用sheets(1)
所以,那一句应该改为
Sheets(1)Range(Cells(i, m), Cells(i, a))Copy Sheets(2)Range(Cells(e, 1), Cells(e, 9))
以上就是关于VBA代码,到底哪里出错了,说是下标越界全部的内容,包括:VBA代码,到底哪里出错了,说是下标越界、利用VBA代码代替EXCEL的VLOOK函数,但是我这个自动的程序代码到底哪里写错了、求问VBA编程中出现错误:缺少子程序、函数或属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)