Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5594|回复: 19

[小测试2]看看你的基本功(已结题)

[复制链接]
发表于 2007-4-20 21:44 | 显示全部楼层 |阅读模式
<p>不知咋了,突然想起流星的这个贴子:<br/><font color="#0000ff">[小测试1]<strong>变量交换</strong></font></p><p>也来出一个小测试题,共有两题:<br/><font color="#0000ff"><strong>第一题:</strong></font><br/>这道题早就出过,或许是我的表达有问题,一直没看到所要的答案。所以换个形式提出:请在下面代码划线处填入相应的内容,使运行结果正确。<br/>Sub TestString()<br/>&nbsp; Dim s$<br/>&nbsp; s = [A1]<br/>&nbsp; if&nbsp;<u><font style="BACKGROUND-COLOR: #ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></u> then msgbox "[A1]单元格是全部由字母组成并以E(e)结尾的字符串。"<br/>End Sub<br/><font color="#0000ff"><strong>第二题:</strong></font><br/>先来看下面的代码:<br/>Sub aMain()<br/>&nbsp; Dim x<br/>&nbsp; x = [A1]<br/>&nbsp; Ch x<br/>&nbsp; Debug.Print x<br/>End Sub<br/>Sub Ch(x)<br/>&nbsp; x = x + 1<br/>&nbsp; Debug.Print x<br/>End Sub<br/>假定[A1]单元格为空白,运行上面代码会在“立即窗口”输出结果:<br/><font style="BACKGROUND-COLOR: #dddddd;">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/></font>要求:不能修改Ch子过程,只对aMain过程的代码进行修改,使输出结果为:<br/><font style="BACKGROUND-COLOR: #dddddd;">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/></font>这个要求并不难,但关键是你要修改得巧妙并给出必要的解释。所谓巧妙的含义是至少你自己觉得是巧妙的。</p><p>奖励嘛,3元吧。别嫌少。最近一段时间不能常来,不过我会想念大家的。</p>
[此贴子已经被作者于2007-4-23 20:43:44编辑过]
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2007-4-20 22:21 | 显示全部楼层

<p>沙发</p><p>第一题:Right(s, 1) = "e"&nbsp;&nbsp; ''''我理解错了[em04],我少看了一个条件,我再想,</p><p>[em06]不行,我想不出来,单个判断好办s1=Asc(s)&nbsp;&nbsp;&nbsp;&nbsp;再判断s1 &gt; 64 And&nbsp;s1 &lt; 91 Or&nbsp;s1 &gt; 96 And s1&lt; 123</p><p>单元格里是字数不定,我只会分开它逐个判断,这样不符合题意,还是请qee用老师指教。</p><p>第二题:Sub aMain()<br/>&nbsp; Dim x<br/>&nbsp; Ch x<br/>&nbsp; x = [A1]<br/>&nbsp; Debug.Print x<br/>End Sub</p><p>让[A1]的空值后赋给x就行了<br/></p>
[此贴子已经被作者于2007-4-21 0:32:26编辑过]
回复

使用道具 举报

发表于 2007-4-20 23:06 | 显示全部楼层

<p>ucase(Right(s, 1))="E",或者lcase(Right(s, 1))="e"只能判断最后一个字符是不是E(e),但无法确认是否全部由字母组成</p><p>只用一句代码,还想不出办法来,等待用哥的答案</p>
回复

使用道具 举报

发表于 2007-4-21 12:15 | 显示全部楼层

Sub test()<br/>&nbsp;&nbsp;&nbsp; Dim s$<br/>&nbsp;&nbsp;&nbsp; s = [A1]<br/>&nbsp;&nbsp;&nbsp; If Application.CheckSpelling(s) = False And UCase(Right(s, 1)) = "E" Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "[A1]单元格是全部由字母组成并以E(e)结尾的字符串。"<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "false"<br/>&nbsp;&nbsp;&nbsp; End If<br/>End Sub
回复

使用道具 举报

发表于 2007-4-21 12:16 | 显示全部楼层

上述函数基本符合要求,但不能确定中文,还需另判断。
回复

使用道具 举报

发表于 2007-4-21 12:20 | 显示全部楼层

<p>第2小题可以用END,就当是开玩笑,呵呵</p><p>Sub aMain()<br/>&nbsp; Dim x<br/>&nbsp; x = [A1]<br/>&nbsp; Ch x<br/>&nbsp; End<br/>&nbsp; Debug.Print x<br/>End Sub<br/>Sub Ch(x)<br/>&nbsp; x = x + 1<br/>&nbsp; Debug.Print x<br/>End Sub</p><p>我想,可能会用到递归法吧...</p>
回复

使用道具 举报

发表于 2007-4-21 12:26 | 显示全部楼层

<p>第2小题</p><p>Sub aMain()<br/>&nbsp; Dim x<br/>&nbsp; x = [A1]<br/>&nbsp; Call Ch(x - 0)<br/>&nbsp; End<br/>&nbsp; Debug.Print x<br/>End Sub<br/>Sub Ch(x)<br/>&nbsp; x = x + 1<br/>&nbsp; Debug.Print x<br/>End Sub<br/></p>

[此贴子已经被作者于2007-4-21 16:37:04编辑过]
回复

使用道具 举报

发表于 2007-4-21 16:37 | 显示全部楼层

<p>第2小题</p><p>Sub aMain()<br/>&nbsp; Dim x<br/>&nbsp; x = [A1]<br/>&nbsp; Call Ch(x - 0)<br/>&nbsp; Debug.Print x<br/>End Sub<br/>Sub Ch(x)<br/>&nbsp; x = x + 1<br/>&nbsp; Debug.Print x<br/>End Sub</p><p></p>
回复

使用道具 举报

 楼主| 发表于 2007-4-21 21:04 | 显示全部楼层

<p>多谢<strong><font face="Verdana" color="#da2549">danielcm</font></strong>,<strong><font face="Verdana" color="#da2549">烟雨江南</font></strong>,<strong><font face="Verdana" color="#da2549">element</font></strong>三兄参与.</p><p>第一题最先出现在置顶的<a title="《[精英专题]VBA字符串用法大全(整理中,请参与进来)》
作者:chenhuafu
发表于:2006-10-9 17:03:02
最后发贴:这个函数我用的比较频..." href="http://www.excelpx.com/forum.php?mod=viewthread&tid=8822" target="_blank"><font color="#0000ff">[精英专题]VBA字符串用法大全(整理中,请参与进来)</font></a>中.</p><p>第二题是开放性题目....</p><p>周一晚结贴.</p>
回复

使用道具 举报

发表于 2007-4-21 22:51 | 显示全部楼层

<p>再试试第1小题的可能性</p><p>解决例如s=“sdf士大夫dfe”,在前面一贴中为TRUE的问题</p><p>Sub test()<br/>&nbsp;&nbsp;&nbsp; Dim s$<br/>&nbsp;&nbsp;&nbsp; s = [a1]<br/>&nbsp;&nbsp;&nbsp; If Application.CheckSpelling(s) = False And Len(s) = LenB(VBA.StrConv(s, vbFromUnicode)) And UCase(Right(s, 1)) = "E" Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "[A1]单元格是全部由字母组成并以E(e)结尾的字符串。"<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox "false"<br/>&nbsp;&nbsp;&nbsp; End If<br/>End Sub</p>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-27 03:27 , Processed in 0.244926 second(s), 3 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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