Создание списка именованных диапазонов для каждого листа

Есть много похожих вещей, но это не совсем моя проблема. Я пытаюсь назвать диапазоны каждой вкладки на основе сведений об имени вкладки. Я разместил имена вкладок на одном листе и теперь хочу определить именованные диапазоны на основе этих ячеек. Я не могу заставить его любить мои имена диапазонов с переменной.

Sub Test()

    Dim x As Integer
    Dim y As String
    Dim YY As String
    Dim z As String
    Dim ZZ As String

    For x = 1 To Worksheets.Count

    Sheets("List of Tab Names").Activate

    y = Cells(x, 1).Value
    z = Cells(x, 2).Value
    YY = y & "Data2"
    ZZ = z & "YoA2"


    Sheets(y).Activate

    Range("C9:BG233").Name = " ' " & YY & " ' "
    Range("C7:BG7").Name = " ' " & ZZ & " ' "

    Next x

End Sub

person user8806917    schedule 20.10.2017    source источник


Ответы (2)


Вам не нужны одинарные кавычки вокруг имен диапазонов. Просто попробуй:

Range("C9:BG233").Name = YY
Range("C7:BG7").Name = ZZ
person Michael    schedule 20.10.2017
comment
Я получаю сообщение об ошибке во время выполнения "1004": сообщение. Он говорит, что я пытаюсь назвать что-то без буквы или подчеркивания. Итак, я меняю имя столбца, чтобы посмотреть, поможет ли это. - person user8806917; 20.10.2017
comment
Какие у вас есть значения y и z? Я предполагаю, что y - это именно то, что соответствует вашим именам листов, но если в них есть пробелы или дефисы, это вызовет проблемы. - person Michael; 20.10.2017
comment
ах!! В названиях вкладок есть пробелы. Благодарю вас! - person user8806917; 21.10.2017

Если я правильно понял вашу идею, я думаю, что все, что вам не хватает, это функция Worksheets(sheetname)

Как вы можете видеть в коде здесь:

Range("A1:A5").Name = Worksheets("Sheet2").Range("A1")
person amitklein    schedule 20.10.2017
comment
Моя проблема в том, что я хочу перебрать все листы и назвать их. Мне нужно превратить Sheet2 в цикл. - person user8806917; 20.10.2017
comment
функцию Worksheets() можно использовать с целым числом (например, Worksheets(1)), поэтому вы можете выполнить цикл for для просмотра всех листов. Или вы просто хотите дать имя листам? - person amitklein; 20.10.2017