大家看下这段VBA代码

ROCKET001 2007-08-01 12:43:07
大家看下这段VBA代码:错误提示Next没有For,急

Sub insert()

Dim a, b As Integer
Dim str_id, str_itemp As String
For a = 1 To Worksheets("old").Count
str_id = Worksheets("old").Cells(a, 1).Value
For b = 1 To Worksheets("new").Count
If Worksheets("new").Cells(b, 1).Value = str_id Then
str_itemp = Worksheets("new").Cells(a, 3).Value
Worksheets("old").Cells(a, 8).Value = str_itemp
Worksheets("old").Cells(a, 10).Value = Worksheets("new").Cells(a, 4).Value
Worksheets("old").Cells(a, 11).Value = Worksheets("new").Cells(a, 5).Value
Worksheets("old").Cells(a, 12).Value = Worksheets("new").Cells(a, 6).Value
Worksheets("old").Cells(a, 14).Value = Worksheets("new").Cells(a, 7).Value
Worksheets("old").Cells(a, 17).Value = Worksheets("new").Cells(a, 8).Value
Worksheets("old").Cells(a, 18).Value = Worksheets("new").Cells(a, 9).Value
Next b
Next a

End Sub
...全文
225 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tennicse 2007-08-09
  • 打赏
  • 举报
回复
Dim wsA as Wooksheet
set wsA = Worksheets("old")
seasuncs 2007-08-08
  • 打赏
  • 举报
回复
John1CSDN(AK-48)说得对!

Integer类型的最大值为32 767

Worksheets("old").Rows.Count 应该是很大的值(65536)所以越界了
应该 类似用这样的方法确定最后一行吧:
Worksheets("old").UsedRange.Rows.Count
John1CSDN 2007-08-01
  • 打赏
  • 举报
回复
Dim a, b As Integer
------------------------
这个不对,因为分配的内存太小,会溢出
应该为:
Dim a, b As Long
John1CSDN 2007-08-01
  • 打赏
  • 举报
回复
上面我打错了,
Worksheets("old").Count 应该是: Worksheets("old").Rows.Count
John1CSDN 2007-08-01
  • 打赏
  • 举报
回复
Worksheets("old").Count 应该是: Worksheets("new").Rows.Count
ROCKET001 2007-08-01
  • 打赏
  • 举报
回复
这是我第一次写VBA的语句,下面的提示下标越界或不支持属性的引用。
我想问下,怎样引用一个sheet(一个名字是old,另一个是new)

Sub insert()
Dim a, b As Integer
Dim str_id As String
For a = 1 To Worksheets("old").Count
str_id = Worksheets("old").Cells(a, 1).Value
For b = 1 To Worksheets("new").Count
If Worksheets("new").Cells(b, 1).Value = str_id Then
Worksheets("old").Cells(a, 8).Value = Worksheets("new").Cells(a, 3).Value
Worksheets("old").Cells(a, 10).Value = Worksheets("new").Cells(a, 4).Value
Worksheets("old").Cells(a, 11).Value = Worksheets("new").Cells(a, 5).Value
Worksheets("old").Cells(a, 12).Value = Worksheets("new").Cells(a, 6).Value
Worksheets("old").Cells(a, 14).Value = Worksheets("new").Cells(a, 7).Value
Worksheets("old").Cells(a, 17).Value = Worksheets("new").Cells(a, 8).Value
Worksheets("old").Cells(a, 18).Value = Worksheets("new").Cells(a, 9).Value
Exit For
End If
Next b
Next a
End Sub
xiao7_ben 2007-08-01
  • 打赏
  • 举报
回复
缺少与这行
If Worksheets("new").Cells(b, 1).Value = str_id Then
配套的End IF

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧