在Excel VBA中将版本号与多个小数点进行比较

我有一个工作表,它存储在一个单元格中的软件版本号,它使用多个小数点。 例如5.2.16

我需要能够进行版本号比较。 单元格中的版本号是高于还是低于我比较的版本号。

一个Double只能存储一个带有一个小数点的数字,所以出现了。

我尝试过的一种方法是用Replace去除小数,并将数字存储在Longvariables中。

lngMyNumber = Replace("5.2.16", ".", "") 

然后,我可以很容易地比较数字,但当然如果版本号5.1(51)与4.5.10(4510)相比较,5.1不会作为更高的版本号出现。

有没有人有一个优雅的解决scheme的build议?

这应该工作。 将replace的版本号传递给函数以及所需的长度,这应该是版本的最大string长度。

 Function rightSize(ver, verlen As Integer) As Long Dim i As Integer For i = Len(ver) To verlen - 1 ver = ver & "0" Next rightSize = Int(ver) End Function 

我相信这是一个更强大的方法,因为它不认为版本组件是相同的长度:

 Function VersionCheck(currVer, latestVer) As Boolean Dim currArr() As String, latestArr() As String currArr = Split(currVer, ".") latestArr = Split(latestVer, ".") 'If versions are the same return true If currVer = latestVer Then VersionCheck = True Exit Function End If 'Iterate through the version components Dim i As Integer For i = LBound(currArr) To UBound(currArr) 'If the end of the latest cersion is reached, the current version must be up to greater 'meaning it is up to date If i > UBound(latestArr) Then VersionCheck = True Exit Function End If 'Cast the component to an integer Dim curr As Integer, latest As Integer curr = Int(currArr(i)) latest = Int(latestArr(i)) 'Check which version component is greater in which case return a result If curr > latest Then VersionCheck = True Exit Function ElseIf curr < latest Then VersionCheck = False Exit Function End If 'If the version components are equal, iterate to the next component Next 'If there are remaining components in the latest version, return false If i < UBound(latestArr) Then VersionCheck = False Exit Function End If 

结束function