我有以下代码可以转换以下格式的字符串:"G##"
为整数 ##
Dim str As String
Dim int As Integer
str = "G14"
int = CInt(Right(str, Len(str) - 1))
但这将定期在大型数据库上运行。
我想知道是否有任何可能更有效的替代方案(尤其是关于最后一行)?
最佳答案
在我的测试中使用
Mid$(strTest, 1, 1) = "0"
lngTest = CLng(strTest)
比使用快 30-40%
CLng(Right$(strTest, Len(strTest) - 1))
这反过来又比
CLng(Right(strTest, Len(strTest) - 1))
我用了
Long
因为它在速度方面优于 Integer
对于多个替换,
RegExp
可能会变成它自己的。开销太高,无法证明此示例的合理性测试码
Sub Test()
Dim dbTime As Double
Dim strTest As String
Dim lngTest As Long
Dim lngCnt As Long
strTest = "G14"
dbTime = Timer
For lngCnt = 1 To 1000000
lngTest = CLng(Right$(strTest, Len(strTest) - 1))
Next lngCnt
Debug.Print Timer - dbTime
dbTime = Timer
For lngCnt = 1 To 1000000
lngTest = CLng(Right(strTest, Len(strTest) - 1))
Next lngCnt
Debug.Print Timer - dbTimer
dbTime = Timer
For lngCnt = 1 To 1000000
Mid$(strTest, 1, 1) = "0"
lngTest = CLng(strTest)
Next lngCnt
Debug.Print Timer - dbTime
End Sub
关于string - 将字符串变量转换为整数的最有效 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095696/