Вы хотите индекс самой правой косой черты.InStr
может получить индекс персонажа, начинающегося слева, но вам нужно InStrRev
, чтобы получить индекс символа, начинающегося справа.
Используя этот индекс, Mid
функция возвращает вам искомую подстроку - этот код выдает желаемый результат:
Debug.Print Mid(linkId, InStrRev(linkId, "/") + 1)
Нет необходимости Split
строки и использования манипуляций с массивами, строковые функции могут обрабатывать это изначально.
Обратите внимание, что For Each
эффективен для итерационных коллекций объектов.Для итерации массивов используйте цикл For
для оптимальной производительности [Source] .
Более того, работа с String
вместо Variant
позволяет избежать неявного типапреобразования.Следовательно, это должно быть более эффективным:
Sub GetId()
Dim linkList As Variant
linkList = Array( _
"https://etc.com/en/category/all/all/shops/206898", _
"https://etc.com/ar/category/all/mobile/350689", _
"https://etc.com/bn/category/all/bike/760689" _
)
Dim current As Long, link As String
For current = LBound(linkList) To UBound(linkList)
link = linkList(current)
Debug.Print Mid$(link, InStrRev(link, "/") + 1)
Next
End Sub