Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3018|回复: 8

[已解决]代码测试

[复制链接]
发表于 2014-3-3 23:05 | 显示全部楼层 |阅读模式
本帖最后由 642070295 于 2014-3-4 10:29 编辑

各位大师,深夜好!有个附件里的代码麻烦帮测试一下 ,看看错在哪里?并给予纠正代码 附件66.rar (98.18 KB, 下载次数: 10)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-3-3 23:09 | 显示全部楼层
回复

使用道具 举报

发表于 2014-3-3 23:11 | 显示全部楼层
看错了,这个单元格是错误值,这样比较是会出错的。
回复

使用道具 举报

发表于 2014-3-3 23:17 | 显示全部楼层
  1. Private Sub CommandButton1_Click()
  2.     Application.ScreenUpdating = False
  3.     Dim m&, j&, p&, n$, s$, arr
  4.     '(五)减余l
  5.     m = Sheets("rK").[o1048576].End(xlUp).Row
  6. step2:     For j = m - 59 To m - 15
  7.         If Sheets("rK").Cells(j, "u") > 0 Then
  8.             Exit For
  9.         End If
  10.     Next j
  11.     '   If j = m + 1 Then GoTo step3
  12.     If Application.CountIf(Sheets("rK").Range("u" & m - 59 & ":u" & m - 15), ">0") = 0 Then GoTo step3
  13.     If Not IsError(Sheets("rK").Cells(j, "n").Value) Then
  14.         If Sheets("rK").Cells(j, "n").Value = "b" Then
  15.             If Sheets("rK").[m2] >= 2 Then
  16.                 Sheets("rK").Cells(m - 15, "o") = "=if(n" & m - 15 & "=""b"",b" & m - 15 & "-$U$" & j & "/( $m$2-1),b" & m - 15 & ")": n = "b"
  17.             End If
  18.         End If
  19.     End If
  20.     Sheets("rK").Cells(m - 15, "o").AutoFill Destination:=Sheets("rK").Range("o" & m - 59 & ":o" & m - 15 & ""), Type:=xlFillDefault
  21.     For p = m - 59 To m - 15
  22.         If Not IsError(Sheets("rK").Cells(p, "n").Value) Then

  23.             If Sheets("rk").Cells(p, "n") = n Then
  24.                 s = s & "," & Sheets("rK").Cells(p, 1)
  25.             End If
  26.         End If

  27.     Next p
  28.     Sheets("rK").Cells(j, "o") = 0
  29. rqxs:     arr = Split(Mid(s, 2), ",")
  30.     If UBound(arr) <> -1 Then
  31.         Sheets("rK").[q5].Resize(, UBound(arr) + 1) = arr
  32.     End If
  33.     MsgBox "完毕!"
  34. step3:     Exit Sub
  35. End Sub
复制代码
没改,只把出错的地方加了点判断。
回复

使用道具 举报

 楼主| 发表于 2014-3-3 23:52 | 显示全部楼层
hwc2ycy 发表于 2014-3-3 23:17
没改,只把出错的地方加了点判断。

j=400
Sheets("rK").Cells(j, "n") = "b"
在表格中是符合条件的呀!?怎么会出错了呢?搞不懂还是麻烦老师帮改好代码吧?!

回复

使用道具 举报

发表于 2014-3-4 08:44 | 显示全部楼层
j=400时单元格cells(j,"n")是没错,可你的代码执行后,压根不会运行到400这个值,你F8试试。
step2: For j = m - 59 To m - 15
         If Sheets("rK").Cells(j, "u") > 0 Then
            Exit For
         End If
       Next j
另外,建议少用GOTO。
j的值就只出现过365一次。

回复

使用道具 举报

 楼主| 发表于 2014-3-4 09:11 | 显示全部楼层
hwc2ycy 发表于 2014-3-4 08:44
j=400时单元格cells(j,"n")是没错,可你的代码执行后,压根不会运行到400这个值,你F8试试。
step2: For j ...

啊......再请教一下,程序中用goto语句有什么副作用(影响)吗?
回复

使用道具 举报

发表于 2014-3-4 09:47 | 显示全部楼层    本楼为最佳答案   
642070295 发表于 2014-3-4 09:11
啊......再请教一下,程序中用goto语句有什么副作用(影响)吗?

如果你代码不是很熟,流程过多跳转不易读。
回复

使用道具 举报

 楼主| 发表于 2014-3-4 10:27 | 显示全部楼层
hwc2ycy 发表于 2014-3-4 09:47
如果你代码不是很熟,流程过多跳转不易读。

好的,谢谢姐姐!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 11:34 , Processed in 0.331321 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表