Самый быстрый способ заменить символ в строке в VBA

У меня есть строка (диапазон excel), что-то вроде "$ A $ 1: $ AB $ 1200".

Мне нужно заменить строку начального диапазона (здесь, 1) на другое значение, скажем, 6 (поэтому строка становится "$ A $ 6: $ AB $ 1200")

Я пробовал с кодом ниже, но он кажется слишком сложным

Dim stRng As String
 stRng = Split(usdRange, ":")(0)

 Dim row2bRepl As Long
 row2bRepl = Right(stRng, Len(stRng) - InStr(2, stRng, "$"))

 usdRange = Replace(stRng, row2bRepl, hdrRow, InStr(2, stRng, "$"))

Любая помощь в том, как добиться этого проще?

ТИА!

2 ответа

Это довольно быстро и очень прямо!

Sub test()
 Dim s1 As String, s2 As String

 s1 = "$A$1:$AB$1200"
 s2 = Intersect(Range(s1), Range(s1).Offset(5, 0)).Address 'evaluates to $A$6:$AB$1200
End Sub

Согласно вашим комментариям, здесь вы можете увидеть, что он отлично работает с полностью случайным диапазоном, который определяется только во время выполнения

Sub test()
 Dim usdRange As String, usdRange2 As String
 Dim lastRow As Long, lastCol As Long
 lastRow = Application.WorksheetFunction.RandBetween(10, 100)
 lastCol = Application.WorksheetFunction.RandBetween(1, 100)

 usdRange = Range("A1", Cells(lastRow, lastCol)).Address
 usdRange2 = Intersect(Range(usdRange), Range(usdRange).Offset(5, 0)).Address

 Debug.Print usdRange, usdRange2
End Sub

Выводит следующие значения, компенсируя все диапазоны на указанную величину:

Old string New string
$A$1:$CF$22 $A$6:$CF$22
$A$1:$AA$93 $A$6:$AA$93
$A$1:$N$82 $A$6:$N$82


Что-то вроде этого будет работать. Это не намного проще, но выглядит просто:

Public Sub ReplaceString()

 Dim strInput As String
 Dim lngFrom As Long
 Dim lngTo As Long

 strInput = "$A$1:$AB$1200"

 lngFrom = InStr(2, strInput, "$")
 lngTo = InStr(1, strInput, ":")

 Debug.Print Left(strInput, lngFrom) & "77" & Right(strInput, Len(strInput) - lngFrom-1)

End Sub

Он берет левое и правое положения строки и ставит в середине новое значение, в этом случае 77.

licensed under cc by-sa 3.0 with attribution.