怎樣用vba識別一段字元是不是ISIN或者SEDOL

時間 2021-07-11 13:58:20

1樓:吳棋仁

CUSIP比ISIN少了前面兩位和最後一位。

Option Explicit

Option Base 0

Public Function ValidISIN(ByVal strISIN As String) As Boolean

Dim lngCheckNum As Long

Dim varNumsAs Variant

Dim lngCharAs Long

Dim lngResultAs Long

strISIN = Trim$(UCase$(strISIN))

If Not ISINPattern(strISIN) Then Exit Function

lngCheckNum = CLng(Right$(strISIN, 1))

varNums = Join$(CharToDigit(Left$(strISIN, 11)), "")

varNums = Split(Left(StrConv(varNums, vbUnicode), Len(varNums) * 2 - 1), Chr$(0))

For lngChar = LBound(varNums) + UBound(varNums) Mod 2 To UBound(varNums) Step 2

varNums(lngChar) = varNums(lngChar) * 2

Next lngChar

varNums = Join$(Split(StrConv(Join$(varNums, ""), vbUnicode), Chr$(0)), ",")

lngResult = (10 - (Evaluate("sum()") Mod 10)) Mod 10

ValidISIN = CBool(lngCheckNum = lngResult)

End Function

Option Explicit

Option Private Module

Public g_objREGEX As Object

Public Function ISINPattern(ByVal strISIN As String) As Boolean

If g_objREGEX Is Nothing Then

Set g_objREGEX = CreateObject("vbscript.regexp")

End If

With g_objREGEXIgnoreCase = FalsePattern = "^[A-Z][A-Z0-9][0-9]$"

End With

ISINPattern = g_objREGEX.Test(strISIN)

End Function

Public Function CharToDigit(ByVal strSecurity As String) As Variant

Dim objMatchAs Object

Dim objMatchesAs Object

Dim strStagingString As String

If g_objREGEX Is Nothing Then

Set g_objREGEX = CreateObject("vbscript.regexp")

End If

With g_objREGEXGlobal = TrueIgnoreCase = FalsePattern = "([A-Z])"

End With

strStagingString = Left$(StrConv(strSecurity, vbUnicode), Len(strSecurity) * 2 - 1)

Set objMatches = g_objREGEX.Execute(strStagingString)

For Each objMatch In objMatches

strStagingString = Replace$(strStagingString, objMatch.Value, Asc(objMatch.Value) - 55)

Next objMatch

CharToDigit = Split(strStagingString, Chr$(0))

End Function

男生談一段不能負責的愛情是不是渣?

韓景 看到這種就來氣!剛剛分手的前任,曾經的甜言蜜語 期許未來美好的憧憬,結果呢 最後分手跟我說要跟兩年前的前任和好,呵呵了,渣就是渣!找什麼理由! Sandy 這個問題問的有點矛盾了,既然雙方都是全身心投入去戀愛,又是女方提的分手,為什麼還說男生渣呢?個人覺得,在現在這個世界,兩個人在一起不就是為...

人是不是總有一段時間運氣不好?

人有三衰六旺,西經路上九九八十一難 困難不可怕,可怕的是被困難擊敗了。心態樂觀的人,總是迎難而上,只有這樣,才能降魔伏妖 所向披靡。星座說水逆。迷信說氣運。我只覺得人生路漫漫,高低都有才正常。沒有什麼事是一輩子都過不去的。我賊喜歡大張偉語錄。世上無難事,只要肯放棄。無論年齡,大張偉給大家提現的平常心...

是不是男生比女生更容易放下一段感情?

認識乙個男生,人很好很善良,遇到發傳單的人他會接過來,養過很多花,學習特別好,笑的時候眼睛彎彎的特別可愛,說話溫溫柔柔的,喜歡萌萌噠的東西,認識他兩年多從來沒有發過火 剛認識那會兒不知道他有沒有女朋友,但也會想這麼好的乙個人肯定有了啊,後來接觸的多了聽他提過一次他的前任,他說他不找物件是為了放下,語...