0

我正在玩一些我string在 Excel VBA 中的 IBAN/SWIFT 代码,但我想从字符串中选择 IBAN 号码。

样品:
DK4520005010201483 IBAN NDEADKKKXXX
NL24ABNA0424079763 iban ABNANL2A
DE56300700100303808000 IBAN DEUTDEDD

上面的字符串保存在字符串iban
代码中:

Dim cutDownStr as String, iban as string

cutDownStr = iban
fooStr = Left(cutDownStr, (Len(cutDownStr) - InStr(cutDownStr, " ")))
MsgBox fooStr
4

4 回答 4

2

如果您想要的只是iban之前的子字符串,那么:

Sub qwerty()
  iban = "DK4520005010201483 IBAN NDEADKKKXXX"
  foostr = Split(iban, " ")(0)
  MsgBox foostr
End Sub
于 2015-05-15T15:01:06.813 回答
2

您的问题是您的代码正在从整个字符串中删除 IBAN 的长度。您需要在 IBAN 之后削减字符串的长度,包括空格。你可以这样做:

fooStr = Left(cutDownStr, (Len(cutDownStr) - (Len(cutDownStr) - InStr(cutDownStr, " "))))
于 2015-05-15T15:08:13.403 回答
1

使用函数

Function findIban(iban as String)
  fooStr = split(iban," ")
  findIban = fooStr(0) 
End Function

用法

Dim cutDownStr as String

cutDownStr = "DK4520005010201483 IBAN NDEADKKKXXX"
fooStr = findIban(cutDownStr)
MsgBox fooStr
于 2015-05-15T15:04:03.120 回答
0

如果您的字符串没有很好地分隔,则 InstrRev 是一个很酷的函数,例如在示例中 IBAN 部分有时是 10 个字符,有时是 8 个字符。InstrRev 像 Instr 一样为您提供字符数(从左侧),但它从右侧搜索字符串。在“/John/Son”中搜索“/”时,结果是 6 NOT 1。从那里您可以使用 Right Function。

    Sub IBANiac
    Dim IBAN1, FindIBAN as String
    IBAN1 = "DK4520005010201483 IBAN NDEADKKKXXX"
    findIBAN = right(IBAN1,len(IBAN1)-instrrev(_
    IBAN1,"IBAN ",-1,vbtextcompare))
    msgbox findIBAN
    'May want to add a +-1 to the second part of the right _
    function to account for spacing
    End Sub
于 2017-07-18T13:24:14.743 回答