VB中17种可用一行代码完成的技巧
作者:JiaJia 日期:2007-12-14
这据说是对逻辑运算不清楚造成的
如果加上下列代码
布尔赋值, 常被人忽略:
字串有效性检测
字串重复次数计数
如果计数同时要对字串有效性判断
有时需要判断字串数组中是否有这一元素, 这时最好不用数组, 而用分隔符字串
对数组初始化(最好将IntArr定义为变体)
判断大小
按索引的 Select Case
按表达式的 Select Case(这种转换要求不能有Case Else的才可以这样, 否则会出错)
字串动态数组是否已初始化
如果有下列代码
如果有下列代码
复制数组到另一变量中(即主变体直接取数组指针, 则所有元素都复制了过去)
如果有下列代码
If A=True Then
C=Not B
Else
C=B
End If
可以改成:
C=Not B
Else
C=B
End If
C=A XOR B
如果加上下列代码
If C=True then
D=28
Else
D=29
End If
可以改成:
D=28
Else
D=29
End If
D = IIf((A XOR B),28,29)
布尔赋值, 常被人忽略:
If A = 13 then
B = True
Else
B = False
End If
可以改成:
B = True
Else
B = False
End If
B = A = 13
或者改成(这个比较正常):
B = (A = 13)
字串有效性检测
If IsNull(StrOrg) or StrOrg="" then
可以改成:
If Len(StrOrg & "")<>0 then
字串重复次数计数
RepeatCount=Ubound(Split(StrOrg,StrFind))
如果计数同时要对字串有效性判断
RepeatCount=IIf((Len(StrOrg & "")=0), 0, Ubound(Split(StrOrg,StrFind))
有时需要判断字串数组中是否有这一元素, 这时最好不用数组, 而用分隔符字串
If Not Len(OrgStr)= Len(Replace(OrgStr,FindStr)) Then
对数组初始化(最好将IntArr定义为变体)
IntArr=Array(12&,28&,29&,30&,31&,52&,24&,60&)
判断大小
IntMax = Iif((IntA > IntB), IntA, IntB)
IntMin = Iif((IntA < IntB), IntA, IntB)
IntMin = Iif((IntA < IntB), IntA, IntB)
按索引的 Select Case
Function GetChoice(Ind As Integer)
GetChoice = Choose(Ind, "Speedy", "United", "Federal")
End Function
GetChoice = Choose(Ind, "Speedy", "United", "Federal")
End Function
按表达式的 Select Case(这种转换要求不能有Case Else的才可以这样, 否则会出错)
Function MatchUp (CityName As String)
Matchup = Switch(CityName = "London", "English", CityName = "Rome", "Italian", CityName = "Paris", "French")
End Function[code]
[b]使用IIf, 前面已有[/b][code]Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
Matchup = Switch(CityName = "London", "English", CityName = "Rome", "Italian", CityName = "Paris", "French")
End Function[code]
[b]使用IIf, 前面已有[/b][code]Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
字串动态数组是否已初始化
If Not Len(Join(StrArr))=0 Then
如果有下列代码
Select Case CombBox.text
Case "London"
Call FuncStrLang(3)
Case "Rome"
Call FuncStrLang(5)
...
End Select
则可以用ItemData属性. 即 "London" 的 Itemdata=3; "Rome" 的 Itemdata=5...
Case "London"
Call FuncStrLang(3)
Case "Rome"
Call FuncStrLang(5)
...
End Select
Call FuncStrLang(CombBox.ItenData)
如果有下列代码
Select Case CombBox.text
Case "London"
Call ClsCity.CityIntr_London
Case "Rome"
Call ClsCity.CityIntr_Rome
...
End Select
可以改成:
Case "London"
Call ClsCity.CityIntr_London
Case "Rome"
Call ClsCity.CityIntr_Rome
...
End Select
CallByName ClsCity, "CityIntr_" & CombBox.text, vbMethod
复制数组到另一变量中(即主变体直接取数组指针, 则所有元素都复制了过去)
Dim iOrgArr(30) as Integer
Dim iDesArr as Variant
...
iDesArr = iOrgArr
Dim iDesArr as Variant
...
iDesArr = iOrgArr
如果有下列代码
Do While Not RsAdo.Eof
If len(DesStr)<>0 then
DesStr=DesStr & VbTab
End if
DesStr=RsAdo!Rec_id
RsAdo.MoveNext
Loop
可以改成:
If len(DesStr)<>0 then
DesStr=DesStr & VbTab
End if
DesStr=RsAdo!Rec_id
RsAdo.MoveNext
Loop
DesStr=RsAdo.GetString()
评论: 0 | 引用: 0 | 查看次数: -
发表评论