以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]哪位大神帮忙看看代码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90131) |
||||
-- 作者:陈嘉淳 -- 发布时间:2016/9/6 10:20:00 -- [求助]哪位大神帮忙看看代码 代码是实现先增加行的日期值必须比上一行的日期值大的要求,测试出来的结果全错的,d2的输出是00:00:00,在命令窗口都是好的 If e.Col.Name="日期" Then Dim b As Integer Dim dr As Row Dim d1,d2 As Date b=e.Row.Index If b>1 Then dr=Tables("现金日记账").Rows(b-2) d1=dr("日期") d2=e.Row("日期") If d2<d1 Then e.Cancel=True End If End If End If
|
||||
-- 作者:有点蓝 -- 发布时间:2016/9/6 10:27:00 -- 上例子测试 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2016/9/6 10:52:00 -- If e.Col.Name="日期" AndAlso e.text > "" AndAlso e.Row.Index > 0 Then
|
||||
-- 作者:陈嘉淳 -- 发布时间:2016/9/6 11:03:00 -- 谢谢你 |
||||
-- 作者:陈嘉淳 -- 发布时间:2016/9/6 11:20:00 -- 大神能不能指点一下我的代码问题出在哪里啊,我实在看不出来问题点在哪里。请原谅菜鸟的无知。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2016/9/6 11:43:00 -- 1、首先要判断是否已经输入了内容,如果没有输入,就没有必要比较了,所以才有 e.text > "" 2、要判断输入的内容是否是正确的日期,所以才有If Date.TryParse(e.text,d1) Then 3、If b>1 Then 是不对的,应该是>0,因为第一行的编号是0。 4、 If d2<d1 也不对,应该是if d2<d1,原因自己想一下。
这些问题,对于新手很正常,你已经做得很不错了。 可以继续按顺序看帮助学些,或者看置顶的视频教程: http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187
[此贴子已经被作者于2016/9/6 11:49:36编辑过]
|
||||
-- 作者:陈嘉淳 -- 发布时间:2016/9/6 13:09:00 -- If d2<d1 也不对,应该是if d2<d1 这一点真的不明白,就是一个大小写的区别。望指点迷津 |
||||
-- 作者:有点蓝 -- 发布时间:2016/9/6 14:22:00 -- 笔误,看3楼 If d2 > d1 Then
|
||||
-- 作者:飞飞 -- 发布时间:2016/9/6 14:27:00 -- 以下是引用狐狸爸爸在2016/9/6 11:43:00的发言:
1、首先要判断是否已经输入了内容,如果没有输入,就没有必要比较了,所以才有 e.text > "" 2、要判断输入的内容是否是正确的日期,所以才有If Date.TryParse(e.text,d1) Then 3、If b>1 Then 是不对的,应该是>0,因为第一行的编号是0。 4、 If d2<d1 也不对,应该是if d2<d1,原因自己想一下。
这些问题,对于新手很正常,你已经做得很不错了。 可以继续按顺序看帮助学些,或者看置顶的视频教程: http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187
好耐心,赞!!
[此贴子已经被作者于2016/9/6 11:49:36编辑过]
|
||||
-- 作者:陈嘉淳 -- 发布时间:2016/9/9 10:10:00 -- 我写的D2是当前行输入的日期,而D1是之前行输入的日期,如果D2<D1取消输入,从代码上来说是没错的。而且B>1是用来判断当前输入列之前是否有数据列存在,从理论上来说也没错。我觉得是我的思路出现了问题导致代码不能实现想要的结果,指出代码的错误处比告诉我这个功能怎么实现要有帮助的多。不然下次我写代码的时候还会按照原来的思路去写,这样类似的问题还是会出现的 |