Как обратиться к рабочему листу с именем range? - PullRequest
0 голосов
/ 25 января 2019

Есть ли способ обратиться к рабочему листу с именем диапазона без активации листа?

У меня есть различные листы с одинаковыми диапазонами, и я хотел бы сослаться на диапазоны в vba. Я ожидаю, что что-то вроде Sheet2.Range("RangeName") будет работать, но это работает только тогда, когда Sheet2 активирован.

Единственный другой способ, которым я могу придумать, - это через Range(Sheet2.Name & "!" & "RangeName"), но это работает только тогда, когда Sheet2.Name не содержит пробелов.

Нужно ли придерживаться активации листов (что я люблю предотвращать) или есть другой способ обратиться к диапазону?

Я работаю с Excel 2016. Помощь очень ценится.

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Вы можете попробовать:

Option Explicit

Sub test()

    Dim strSheetName As String, strrngName As String
    Dim ws As Worksheet
    Dim rng As Range, rngComplete As Range

    'Select sheet name
    strSheetName = "Sheet1"
    'Set sheet based on name selected above
    Set ws = ThisWorkbook.Worksheets(strSheetName)

    'Set range name
    strSheetName = "Test"
    'Set range based on sheet name & range name
    Set rng = ws.Range(strSheetName)

End Sub
0 голосов
/ 25 января 2019

Я немного озадачен.После дополнительного тестирования кажется, что очевидный Sheet1.Range("RangeName"), кажется, работает, даже когда Sheet1 не активирован.

Спасибо за ответы.Извините, что беспокою вас.Я оставлю вопрос для справки

0 голосов
/ 25 января 2019

Заключите имя листа в одинарные кавычки, что позволяет использовать пробелы.

Range("'" & Sheet2.Name & "'!" & "RangeName")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...