Объедините функцию NEXT с переменной (именованный диапазон) из менеджера имен - PullRequest
0 голосов
/ 27 января 2020

У меня есть следующий VBA для вставки значения в каждый лист с помощью функции NEXT:

Sub Insert_Values()
Dim b As Worksheet
For Each b In Worksheets
    Dim Range As Range
    Set Range = b.Range("B2:C4")
    b.Select
    Range.Value = 1
Next b
End Sub

Пока все это прекрасно работает.


Однако сейчас Я хочу использовать named range вместо Set Range = b.Range("B2:C4").
Поэтому я присвоил Range_01 в name manager для Range("B2:C4"), который выглядит следующим образом:


enter image description here


В VBA я изменил:

Dim Range As Range
Set Range = b.Range("Range_01")

Теперь я получаю runtime error 1004.

Я предполагаю, что причина в том, что в name manager фиксировано Sheet1, назначенное для Range_01.
Поэтому мне интересно, есть ли способ назначить named range, но без фиксированного Sheet, чтобы функция NEXT могла все еще проходить через все листы?

1 Ответ

2 голосов
/ 27 января 2020

Не знаю, какова ваша конечная цель, но вы можете использовать свойство Address.

Sub Insert_Values()

Dim b As Worksheet, s As String

s = Range("Range_01").Parent.Range("Range_01").Address 'B2:C4
'or just s = Range("Range_01").Address

For Each b In Worksheets
    Dim Range1 As Range 'use a better name!
    Set Range1 = b.Range(s)
    Range1.Value = 1
Next b

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