Как построить строку для передачи в объект Range? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть объект Range, который я использую для явного вызова Range (обычно одной ячейки) и работы с ячейкой. Я пытаюсь объединить ячейку, в которой она установлена, с ячейкой, расположенной в два столбца справа. Таким образом, всего будет объединено 3 ячейки. Я играл с объектами / функциями Address and Range и Offset, но не могу найти способ сделать это чисто. В приведенном ниже коде я не уверен, должен ли я вместо этого сделать merge_rng в виде строки и построить строку, или сделать merge_rng в качестве диапазона и построить его.

Вот код, который я пробовал:

Dim site_curr_position As Range
Dim merge_rng As String
Set curr_ws = Worksheets(cal_name)

merge_rng = site_curr_position.Address(0, 0) & ":" & site_curr_position.Address(, 0) + 2 'how do I offset by 2 columns?
curr_ws.Range(merge_rng).Merge

Также попробовал это

Dim merge_rng As Range
merge_rng = curr_ws.Range(site_curr_position.Address(0, 0), site_curr_position.Address(0,0).Offset(0, 2)) 'assuming variable is at A1, this would return "A1:A1" still
curr_ws.Range(merge_rng).Merge

1 Ответ

1 голос
/ 07 мая 2019

Вы можете сделать это, построив строку, но она кажется излишне сложной. Я бы предложил вместо этого использовать Resize. Оба эти слияния A1: C1.

Sub x()

Dim r As Range, s As String

Set r = Range("A1")

'Resize
r.Resize(, 3).Merge

'or build a string
s = r.Address
s = s & ":" & r.Offset(, 2).Address
Range(s).Merge

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