VBA代码,到底哪里出错了,说是下标越界

VBA代码,到底哪里出错了,说是下标越界,第1张

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编程中出现错误:缺少子程序、函数或属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9763150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存