ExcelHome学院

 找回密码
 入学

QQ登录

只需一步,快速开始

EH搜索     
白话Excel函数公式 Office易学宝微视频教程合集(Excel+Word+PPT)
笨办法学VBA(从入门到精通) 高效办公必会的Office实战技巧
财务总监的Excel私房课 Excel数据透视表实战秘技
Excel图表神技
查看: 3271|回复: 16

学会这些代码,让你成为vba高手高手之高高手

[复制链接]
发表于 2011-3-28 18:46:01 | 显示全部楼层 |阅读模式
编程要讲效率,尽管现在的计算机,速度是不成问题,但是,如果一行代码能完成,为什么要用更多的代码了?

1、下列代码,则是对逻辑运算不清楚造成。
If A=true Then
C= Not B
Else C= B
End If
可以: C=A XOR B
2、如果加上下列代码:
If C=true then
D=28
Else D=29
End IF
D=Iif((A XOR B),28,29)
3、布尔赋值,常被人忽略:
如: If A= 13 then
B=True
Else B=False
End If
可以: B = A = 13
或者: B = (A = 13)
我更喜欢用后者,这样代码易于看懂。
4、字串有效性检测: If IsNull(StrOrg) Or StrOrg="" then
可以: If Len(StrOrg & "")<>0 then
5、字串重复次数 RepeatCount=Ubound(Split(StrOrg,StrFind))
同样,如果要对字串有效性判断: RepeatCount=Iif((Len(StrOrg & "")=0), 0, Ubound(Split(StrOrg,StrFind))
6、有时需要判断字串数组中是否有这一元素,这时最好不用数组,而用分隔符字串
于是: If Len(OrgStr)= Len(Replace(OrgStr,FindStr)) then 则表明,此元素不存在。
7、对数组初始化:最好用变体,这样,也是一行语句:
如: IntArr=Array(12,28,29,30,31,52,24,60)
注意,此时需要用变量后缀。上面代码,如要定义为长整型,则 IntArr=Array(12&,28&,29&,30&,31&,52&,24&,60&)
要将IntArr 定义为变体
8、判断大小:
IntMax = Iif((IntA > IntB), IntA, IntB)
IntMin = Iif((IntA < IntB), IntA, IntB)
9、按索引的Select Case Function GetChoice(Ind As Integer)
GetChoice = Choose(Ind, "Speedy", "United", "Federal")
End Function
10、按表达式的Select Case(这种转换要求不能有Case Else的才可以这样,否则会出错)
Function MatchUp (CityName As String)
Matchup =tch(CityName = "London", "English", CityName _ = "Rome", "Italian", CityName = "Paris", "French")
End Function
11、使用Iif,前面已有。
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
12、字串动态数组是否已初始化
If Len(Join(StrArr))=0 then 字串动态数组未初始化
13、指定只读CombBox的当前值,如果能确认这个值就在其中,一定不会错,
则: Combbox=CurValue
注意,不可以写成:Combbox.text=CurValue
前者实际是写 _default 这个属性,而后者则是写Text 因为只读,则会导致错误

[ 本帖最后由 gjgswjp 于 2011-3-28 18:47 编辑 ]

评分

参与人数 2登攀 +10 收起 理由
leroy + 5 很实用!
zzmxy + 5 谢谢分享~~

查看全部评分

回复

使用道具 举报

发表于 2011-3-28 21:05:20 | 显示全部楼层

回复 1楼 gjgswjp 的帖子

不可否认,这是非常有用的经验……当然这跟函数公式的简化一样,都需要经验,
但现在大家就可以慢慢吸收了!:handshake
回复 支持 反对

使用道具 举报

发表于 2011-3-29 10:18:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2011-3-29 14:44:39 | 显示全部楼层
不错的转换思路!  学这个就得变通
回复 支持 反对

使用道具 举报

发表于 2011-3-29 19:51:08 | 显示全部楼层
:victory: 太牛了,能达到这种思路功底一定了得。:victory:
回复 支持 反对

使用道具 举报

发表于 2011-3-29 23:28:36 | 显示全部楼层
很高级
可是处于社会主义初级阶段的我还是把工作重心放在实现功能先。。
回复 支持 反对

使用道具 举报

发表于 2011-3-30 08:32:05 | 显示全部楼层

回复 6楼 kimsther 的帖子

很实际,我现在的要求只满足解决问题
回复 支持 反对

使用道具 举报

发表于 2011-3-30 09:06:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2011-7-7 23:17:40 | 显示全部楼层
不是很欣赏  D=Iif((A XOR B),28,29)  这样的写法,可能更简单,但是第一速度不一定快,第二可读性太差。

而原来的写法,无论你学习的是何种语言  都能看得懂
回复 支持 反对

使用道具 举报

发表于 2011-7-8 18:19:22 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

小黑屋|手机版|ExcelHome ( 沪ICP备11019229号 )

GMT+8, 2020-12-1 16:33 , Processed in 0.094880 second(s), 14 queries , MemCache On.

Powered by Discuz! X3.4

© 1999-2021 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

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