Установка диапазона Excel из строки адреса и смещения - PullRequest
0 голосов
/ 12 апреля 2019

Я бы хотел установить переменную диапазона из двух строковых переменных; адрес диапазона и смещение

Например, следующий код устанавливает Ran на R4C6

Dim Str1 As String, Str2 As String, Ran As Range

Str1 = "R1C2"
Str2 = "(3,4)"

Set Ran = Evaluate(Str1).Offset(MID(Str2, 2, 1), MID(Str2, 4, 1))

Debug.Print Ran.Address(, , xlR1C1)

Возможно ли сделать это непосредственно из строк, а не преобразовывать смещенную строку в ее компоненты Row и Column, как в моем примере?

Я пробовал различные синтаксисы, такие как

Set Ran = Evaluate(Str1 & ".Offset" & Str2)

но не могу найти ничего, что работает

1 Ответ

1 голос
/ 13 апреля 2019

Вы должны как-то извлечь цифры.Если вы используете строку в качестве аргумента для объекта Range, строка должна быть в стиле A1.И, конечно, если вы используете объект Cells, вы можете использовать либо числа (для строк или столбцов), либо строки (в стиле A1) для имен столбцов.

Вот еще один метод, использующий RegularВыражения для извлечения числовых значений, но для этого есть много методов:

Опция Явная

Sub due()
    Dim Str1 As String, Str2 As String, Ran As Range
    Dim RE As Object, MC As Object

Str1 = "R1C2"
Str2 = "(3,4)"

Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .Pattern = "\d+"
    Set MC = .Execute(Str1)
        Set Ran = Cells(MC(0), MC(1))
    Set MC = .Execute(Str2)
        Set Ran = Ran.Offset(MC(0), MC(1))
End With

Debug.Print Ran.Address(ReferenceStyle:=xlR1C1)

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...