Office中国论坛/Access中国论坛

标题: [求助]我VBA的Change和SelectionChang事件的光标的跳转 [打印本页]

作者: cg372101    时间: 2008-12-23 13:14
标题: [求助]我VBA的Change和SelectionChang事件的光标的跳转
我VBA的Change和SelectionChang事件中,光标的跳转怎么不听使唤?麻烦高人帮我看看!
另外里面还有好几个问题,也麻烦大家帮我想想办法!谢谢咯。
VBA我已经添加了注释,不过可能有点拗口哦 。麻烦大家了。
功能图如下:
[attach]33982[/attach]
下面是我在“说明”工作表中做的说明,大家看附件就知道了,呵呵,说得有些啰嗦啊。说这么多,都是希望大家能看明白我的问题,以方便帮我解决。所以真的麻烦大家了!!!
说明:   
我想通过在“查询”工作表的【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”再回车……




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3