Excel精英培训网

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

[已解决]关于代码报错掉过不报错

[复制链接]
发表于 2013-1-19 13:07 | 显示全部楼层 |阅读模式
Sub KK()
  Application.DisplayAlerts = False '
Sheets("cxxx").Select
Range("L2") = 1
Range("L3") = 2
Range("L4") = 3
Range("L5") = 4
Range("L6") = -1
Range("X1") = "ぃ钡??肂"
For i = 2 To [t65536].End(xlUp).Row
Range("w" & i) = Split(Range("u" & i), "|")(39)

'當這裡出錯直接跳過 直接刪除Delete刪除重新運行Private Sub CommandButton3_Click()
'問題原因出在數據庫取數據會有一定中奖几率把錯誤數據導入CXXX,因为查询的95%是没有数据的,点击次数多了会凭空多出几条不规则的数据导致代码报错,昏死~!{:191:}
Next
Sheets("cxxx").Delete
End Sub
最佳答案
2013-1-19 15:21
那那句改下:
a = Split(Range("u" & i), "|")(39)
If Err.Number = 0 Then Range("w" & i) = a
err.Clear
这样split报错的会被忽略掉。
发表于 2013-1-19 13:20 | 显示全部楼层
Range("u" & i)里有啥呀。
可以在这里进行判断嘛。
回复

使用道具 举报

 楼主| 发表于 2013-1-19 13:33 | 显示全部楼层
hwc2ycy 发表于 2013-1-19 13:20
Range("u" & i)里有啥呀。
可以在这里进行判断嘛。


數據庫出錯的查詢結果,今天的查詢按道理是沒有結果的,但是中獎了,出了一些不知道哪裡來的數據A!
5275|||||1046000012|||A28460|104600|260000||1|0|0|0|0|0|0||||0||||||||||||||||0|503.00||
5275|||||||1|0|503.00||0|503.00|503.00|0|CH|1|1||
5275|OT|15|503.00|503.00|6225210106412787,06/2015,1,,|
5275|OT||6225210106412787|1|06/2015|503.00|||
*|*|A28460|260000|104600|1.00|503.00|0|0|0|*|*|2|

數據庫正常的查詢,這是2012/10/01號正常情況下的數據{:241:}

4425|||||6293000004| | |C71460|629300|040000||3282|0|0|0|0|0|0||||0||||||||||||||||0|203484.00||
4425|||||6293000004| | |C71460|629300|040000||1|0|0|0|0|0|0||||0||||||||||||||||0|1427.00||
4425|||||6293000004|||C71460|629300|040000||3282|0|0|0|0|0|0||||0||||||||||||||||0|203484.00||
4425|||||6293000004|||C71460|629300|040000||1|0|0|0|0|0|0||||0||||||||||||||||0|1427.00||











回复

使用道具 举报

发表于 2013-1-19 13:39 | 显示全部楼层
你最后又运行了Sheets("cxxx").Delete
也就是说上面的数据即使填正确了也无益啊。结果反正是要被删除的,那你这操作过程不等于是白做了。
你要忽略错误直接on error resume next
回复

使用道具 举报

 楼主| 发表于 2013-1-19 14:18 | 显示全部楼层
hwc2ycy 发表于 2013-1-19 13:39
你最后又运行了Sheets("cxxx").Delete
也就是说上面的数据即使填正确了也无益啊。结果反正是要被删除的,那 ...

刪除的時候我的另一個表數據是關聯這張表的 所以只要數據出來就可以刪掉了!
回复

使用道具 举报

 楼主| 发表于 2013-1-19 14:27 | 显示全部楼层
hwc2ycy 发表于 2013-1-19 13:39
你最后又运行了Sheets("cxxx").Delete
也就是说上面的数据即使填正确了也无益啊。结果反正是要被删除的,那 ...

這個是OK了不報錯了但是因為報錯會有錯誤數據被取出來 導致另一張表加了錯誤的數據~!所以如果報錯 Range("x" & i) = “ ”
回复

使用道具 举报

发表于 2013-1-19 15:21 | 显示全部楼层    本楼为最佳答案   
那那句改下:
a = Split(Range("u" & i), "|")(39)
If Err.Number = 0 Then Range("w" & i) = a
err.Clear
这样split报错的会被忽略掉。
回复

使用道具 举报

 楼主| 发表于 2013-1-19 15:52 | 显示全部楼层
hwc2ycy 发表于 2013-1-19 15:21
那那句改下:
a = Split(Range("u" & i), "|")(39)
If Err.Number = 0 Then Range("w" & i) = a

謝謝,我想知道這樣可以就是報錯了W2到W65555所有值為空值 如果不報錯則取Split(Range("u" & i), "|")(39)  謝謝
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 16:35 , Processed in 0.299573 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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