我想創建宏,它將返回我在字符串中的事務ID的值。字符串包含交易名稱,類型,ID和資金名稱。還有很多空間和「 - 」。到目前爲止,我已經嘗試使用Split()
,但字符串總是不同,它會引起宏觀誤導。有值總是陳舊,其交易ID字符串長度始終爲11.所以我想讓宏找到長度爲11的值並將其返回給我。任何想法如何做到這一點?VBA返回字符串值與確切的11個字母
感謝
我想創建宏,它將返回我在字符串中的事務ID的值。字符串包含交易名稱,類型,ID和資金名稱。還有很多空間和「 - 」。到目前爲止,我已經嘗試使用Split()
,但字符串總是不同,它會引起宏觀誤導。有值總是陳舊,其交易ID字符串長度始終爲11.所以我想讓宏找到長度爲11的值並將其返回給我。任何想法如何做到這一點?VBA返回字符串值與確切的11個字母
感謝
這是爲你工作所提供的輸入。
Option Explicit
Public Function return_me11(str) As String
Dim my_str As String
Dim my_arr As Variant
Dim my_val As Variant
my_str = Replace(str, " ", "-")
my_arr = Split(my_str, "-")
For Each my_val In my_arr
If Len(my_val) = 11 Then
return_me11 = my_val
Exit Function
End If
Next my_val
return_me11 = "No good input"
End Function
到目前爲止它的工作。謝謝!如果有任何更改,將會更新:) –
可能的錯誤是如果您的長度值超過1 11。然後它會返回找到的第一個。 – Vityata
這是斯普利特()我當前的代碼
strLen = Len(FileName)
strFullName = FileName
strName = Left(strFullName, strLen - 4) '4 is because of .xls
strLastName = RTrim(Mid(strName, InStr(strName, " ")))
text_string = Right(strLastName, 18)
WrdArray() = Split(text_string)
ActiveCell.Offset(0, 1).Value = WrdArray(1)
嗨!如果你舉幾個例子,這將是非常有用的。例如:您的輸入和預期輸出。 – Vityata
顯示您嘗試過的內容,您的代碼以及您的期望。答案似乎是分裂的。 – CyberClaw
輸入示例:「AAAAA和BBBBB IIOO 16IIOOBBKK5 3F3W.xls」,我希望輸出「16IIOOBBKK5」,但在單詞和「 - 」之間總是有另一個「空格」,所以'Split()'會變得瘋狂,第5個值總是不同。 –