Как расширить именованный диапазон с помощью VBA, используя смещение - PullRequest
1 голос
/ 13 июня 2019

У меня есть следующий код, который я использую в VBA для Excel.

Он просматривает мою таблицу и создает именованный диапазон на основе значений в столбце B («OSI») и столбце C (i, e «Отчетность»)

Sub Round2()

Set sht = ThisWorkbook.Worksheets("Features")

'Reporting and OSI

Set featuresRng = sht.Range(sht.Range("B1"), sht.Range("C" & sht.Rows.Count).End(xlUp))
rngArray = featuresRng
ReDim NewArr(1 To 1)
y = 1
For i = 1 To UBound(rngArray)
    If rngArray(i, 2) = "Reporting" And rngArray(i, 1) = "OSI" Then
        ReDim Preserve NewArr(1 To y)
        NewArr(y) = featuresRng.Rows(i).Offset(0, 2).Address
        y = y + 1

    End If
Next i

sRng = Join(NewArr, Application.DecimalSeparator)
ThisWorkbook.Names.Add "OSIRep", sht.Range(sRng)

End Sub () 

Создается именованный диапазон шириной в два столбца (от столбца D до столбца E), когда я хочу вместо этого перейти от столбца D к столбцу F.

Я не уверен, какие части кода редактировать - я ценю, что это, вероятно, очень простое решение, но у меня возникли проблемы!

Ответы [ 2 ]

1 голос
/ 13 июня 2019

изменить на это

NewArr(y) = featuresRng.Rows(i).Resize(1, 5).Offset(0, 3).Address
1 голос
/ 13 июня 2019

Используйте свойство Range.Resize , чтобы изменить размер диапазона. Offset только перемещает диапазон.

Например, если ваш диапазон определен как

Dim rng As Range
Set rng = Range("D:E")

и вы хотите расширить его на 1 столбец до столбца F, вы можете сделать это с помощью

Set rng = rng.Resize(ColumnSize:=rng.Columns.Count + 1) 'extend range by 1 column
Debug.Print rng.Address 'will return $D:$F
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...