Foxtable(狐表)用户栏目专家坐堂 → 关于Select Case。


  共有12491人关注过本帖树形打印复制链接

主题:关于Select Case。

帅哥哟,离线,有人找我吗?
wcs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
关于Select Case。  发帖心情 Post By:2010/8/10 16:35:00 [只看该作者]

有这样一段代码,写在 表A 的 datachanged 事件中:

Select Case e.datacol.name
    Case
 第一列,第二列,第三列,第四列,第五列

    代码......(会引用第一列,第二列,第三列,第四列,第五列的)
End Select

 

这段代码中的“第一列,第二列,第三列,第四列,第五列”,是or的关系还是and的关系?

 

我的“第一列,第二列,第三列,第四列,第五列”全部用数据填充器记入表A。

 

现在我想讨论一下填充的顺序,是一行一行地填充还是一个单元格一个单元格地填充的?

 

如果一行一行地填充,那么 Case 第一列,第二列,第三列,第四列,第五列 是or的关系还是and的关系无所谓了,因为它们总是一起来的,一起触发事件代码。

 

如果是一个单元格一个单元格地填充,且它们是OR的关系,那么 Case 第一列,第二列,第三列,第四列,第五列  的效率很低,因为要触发5次。

 

我测试了一下,如果我这样  Case 第一列,第二列  把它们看作一行一行地填充来的,想效率高一点,那么代码不能正确执行(这是不是因为第三列,第四列,第五列不能正确引用?)

 

现在我用Case 第一列,第二列,第三列,第四列,第五列 ,来执行代码,如果是OR的关系的话,那效率很低。

 

我想要的目标是,当第一列,第二列,第三列,第四列,第五列数据都变化以后,再执行代码。

 

各位有效率高一点的方法吗?

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/10 16:39:00 [只看该作者]

是or的关系

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2010/8/10 16:55:00 [只看该作者]

那就是说要触发5次吗?

 

有没有效率高一些的方法?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/10 16:59:00 [只看该作者]

我没有看懂你的问题,不好说

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57584 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2010/8/10 17:03:00 [只看该作者]

如果这样你不如试用最后一列的变化作代码

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/8/10 17:23:00 [只看该作者]

其实充填后如果行数不多的话, 感觉不到速度快慢的.   要不,在充填代码后直接设置计算代码比较一下两者谁更快?

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2010/8/10 18:17:00 [只看该作者]

我想要的目标是,当第一列,第二列,第三列,第四列,第五列数据都变化以后,再执行代码。

 

 

但是

Select Case e.datacol.name
    Case
 第一列,第二列,第三列,第四列,第五列

 

是或者的关系,有任何一列的值变化了,就要执行一次代码。

 

所以这样效率很低。

 

我在寻找效率高一些的方法,我想这五列的数据都变化了以后,再执行代码,这样只会执行一次,当然效率高些。

 

有没有好的办法呢?


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/8/10 18:48:00 [只看该作者]

1、2、3、4、5列的数据是怎么来的?

 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1034 积分:7402 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2010/8/10 22:04:00 [只看该作者]

用数据填充器取来的。

 

我不知道是一行一行取来的,还是一个单元格一个单元格取来的。

 

如果是后者,那我的代码效率就低了,要触发5次。

[此贴子已经被作者于2010-8-10 22:05:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/8/10 22:09:00 [只看该作者]

如果用填充的话就不要在datachanged事件中放这样的代码了,或者填充时关闭执行代码的执行。

填充完成后用For Each语句计算指定列即可,这样速度应该会有大幅提升的。


 回到顶部
总数 20 1 2 下一页