2016-06-20 52 views
0

我想創建宏,它將返回我在字符串中的事務ID的值。字符串包含交易名稱,類型,ID和資金名稱。還有很多空間和「 - 」。到目前爲止,我已經嘗試使用Split(),但字符串總是不同,它會引起宏觀誤導。有值總是陳舊,其交易ID字符串長度始終爲11.所以我想讓宏找到長度爲11的值並將其返回給我。任何想法如何做到這一點?VBA返回字符串值與確切的11個字母

感謝

+3

嗨!如果你舉幾個例子,這將是非常有用的。例如:您的輸入和預期輸出。 – Vityata

+0

顯示您嘗試過的內容,您的代碼以及您的期望。答案似乎是分裂的。 – CyberClaw

+1

輸入示例:「AAAAA和BBBBB IIOO 16IIOOBBKK5 3F3W.xls」,我希望輸出「16IIOOBBKK5」,但在單詞和「 - 」之間總是有另一個「空格」,所以'Split()'會變得瘋狂,第5個值總是不同。 –

回答

0

這是爲你工作所提供的輸入。

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

到目前爲止它的工作。謝謝!如果有任何更改,將會更新:) –

+0

可能的錯誤是如果您的長度值超過1 11。然後它會返回找到的第一個。 – Vityata

0

這是斯普利特()我當前的代碼

  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)