求助for循环语句,整个编码写的对吗

craymannandin 2017-11-22 10:58:59
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Integer
Dim y As Integer
x = Target.Row
If Target.Count > 1 Then Exit Sub
If Target.Column = 2 Then
For y = 1 To x - 1
If Range("by") = Range("bx") Then
Application.Speech.Speak "条码重复,请检查条码"
MsgBox ("条码重复,请检查条码")
Range("B" & x).Clear: Range("B" & x).Select
Next y
Else: Target.Offset(, 1).Select
End If
If Range("B" & x) <> "" And Range("C" & x) <> "" And Range("B" & x) <> Range("C" & x) Then
Application.Speech.Speak "字符长度或内容不一致,请检查条码"
MsgBox ("字符长度或内容不一致,请检查条码")
Range("B" & x).Clear: Range("C" & x).Clear: Range("B" & x).Select
If Target.Column = 3 Then Target.Offset(1, -1).Select
End If
End Sub
...全文
692 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
syun2005 2018-01-28
  • 打赏
  • 举报
回复
一看就有很多错的
ZHRXJR 2017-12-01
  • 打赏
  • 举报
回复
大概看了一下,程序的进程顺序有问题,在FOR中有IF语句,应该首先结束IF,才能结束FOR,你的这个首先结束了FOR后才结束IF,典型的进程逻辑错误。
threenewbee 2017-11-30
  • 打赏
  • 举报
回复
鬼才知道,你这个是vba,是和你的excel文档结构相关的,光看代码怎么知道。比如说你a b c三列,里面是不是这么存的,有没有条形码,等等。 楼上说的,贴进去运行下是最简单的知道行不行的办法。
赵4老师 2017-11-24
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。 注释掉所有On Error Resume Next语句,在VBA IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
赵4老师 2017-11-24
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
X-i-n 2017-11-23
  • 打赏
  • 举报
回复
F5运行,如果能运行,也能得到正确的结果,就对。

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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