设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2387|回复: 0
打印 上一主题 下一主题

[基础应用] [求助]我VBA的Change和SelectionChang事件的光标的跳转

[复制链接]
跳转到指定楼层
1#
发表于 2008-12-23 13:14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我VBA的Change和SelectionChang事件中,光标的跳转怎么不听使唤?麻烦高人帮我看看!
另外里面还有好几个问题,也麻烦大家帮我想想办法!谢谢咯。
VBA我已经添加了注释,不过可能有点拗口哦 。麻烦大家了。
功能图如下:

下面是我在“说明”工作表中做的说明,大家看附件就知道了,呵呵,说得有些啰嗦啊。说这么多,都是希望大家能看明白我的问题,以方便帮我解决。所以真的麻烦大家了!!!
说明:   
我想通过在“查询”工作表的【S16】单元格输入图书条码号后,则从“中央库”工作表中检索出所对应的记录,并将该记录的“题名与责任者”等信息写入到上面的【O3:O11】单元格区域,而将“中央库”工作表中其“验收”信息不为“Yes”(不区分大小写),且“公司”、“控制号”、“卷册号”信息都与该记录一致的记录逐项依次写入到【C21:R30】单元格区域。  
  如果【C21:R30】输出了这样的记录,则将鼠标自动定位到【S21】单元格等待输入。
  如果没有这样的记录可供输出(可能压根就没有这样的书,或者有这样的书但是其“验收”信息已经都为“Yes”(也就是验收好了)),则鼠标仍旧定位到【S16】单元格。
  如果根据【S16】输入的条码在“中央库”工作表中找不到对应的记录,则只在【O3】中输出“库中暂该条码号的图书”,其余【O4:O11】都为空。鼠标仍旧回到【S16】。
  如果根据【S16】输入的条码在“中央库”工作表中能找到对应的记录,但是“公司”、“控制号”、“卷册号”信息与之相同的记录其“验收”信息都已经为“Yes”则只在【O3】中输出“【该书已验收】”及其“题名与责任者”信息,其余【O4:O11】都按对应信息输出。而鼠标仍旧回到【S16】。
要求: 1。整个过程中鼠标只在【S16】及【S21:S30】中进行跳转。最好能控制选择其他单元格或区域(这个功能我可能没做好)。  
2。鼠标在【S21:S30】中时,必须其所在行不为空(至少该行C列的单元格不为空),要是所在行为空,则直接跳到【S16】。  
"3。鼠标在【S21:S30】中时,要是在其中输入“ALL”(这个区域输入的信息都要求不区分大小写),则这一行的记录及其之下的记录的“验收”信息都为“Yes”并写入“中央库”工作表,且鼠标自动跳转到【S16】单元格。
                                           要是在其中输入“YES”或其他信息,则只把该行的记录的“验收”信息“Yes”或其他写入到“中央库”工作表,而鼠标自动跳转到S列的下一个单元格(除非下一个单元格已经超出【S21:S30】区域或者它所在的行为空。这两种情况的话鼠标仍旧跳回【S16】单元格)。"  
   
目前存在的问题:   
???? 1。【S16】单元格输入条码号回车后,即使【C21:S30】有输出,但是鼠标就跳到【R21】单元格后又立即跳回【S16】去了(这种情况,鼠标本应该定位在【R21】的)。不知道为什么,麻烦大家帮我看看里面的VBA源代码(有注释)。谢谢咯!!  ★★因急用,请先帮忙解决这个问题
???? 2。因为我的原“中央库”工作表有2万3千多条记录,所以感觉运行速度很慢,不知道我的VBA代码能不能再优化?或者有没有效率更高的办法。谢谢咯!!  ★还有这个问题
? 3。曾经想到在输出记录到【C21:S30】时,把“验收”信息为“Yes”的也显示出来,只是鼠标在其后的S列耽搁(更不用说修改其信息),当时想到的是用锁定单元格并保护的办法,但是没行得通。不知道还有没有其他的办法来实现?谢谢咯!!  
? 4。怎么用VBA即时统计“中央库”工作表中其“验收”信息为“Yes”的记录总条数和种数(“这里的‘种’是指只要控制号相同的就算一种”),并写入【O12】单元格,其格式为“共***种***册,其中已验收***种***册,其中***种被完全验收”(这里的“完全验收”是指该控制号的所有记录的“验收”信息全部为“Yes”的)。  
? 5。如果【C21:S30】中列出来的记录包括有【S16】中的条码号所对应的记录,则该记录在【C21:S30】中的显示底纹为“红色”,而其他的记录除非与这条“红色”记录的对应信息不一致,否则不用底纹。
     如果对应信息(“条码号”信息例外)与“红色”记录不一致,则该信息显示的底纹为“浅蓝色”,比如“单价”信息与“红色”记录不一致,那么这条记录的“单价”信息用“浅蓝色”作底纹。至于与“红色”记录不一致的“条码号”,则是比较其前面各位的差异,而只显示后面不相同的几位,比如“红色”记录的条码号为“2306469”,其下面两行的条码号有“2306470”、“2306471”,因为他们前面相同的位为“23064”,所以下面这两行的条码号分别显示为“70”和“71”。这个功能我不会做,所以压根没做。如果哪位能帮我做出来,那真是太感谢了!!"
  
总之拜托大家了!谢谢!
调试: 大家可以先在【S16】输入2306451回车试试,回车后【C21:S30】显示出三条记录,这时鼠标本应当定位到【S21】的,但不知怎么回事,它还是回到了【S16】???不解!!!没办法,先手动点击【S21】,输入“All”回车……大家可以对照“中央库”工作表的对应信息看。还可以再输入2306451试试。或者第一次输入条码2306451后,在【S21】输入除“Yes”、“All”之外的其它信息,比如“no”再回车在【S22】输入“Yes”再回车在【S23】输入“All”再回车……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-2 02:49 , Processed in 0.081838 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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