Хотя я немного растерялся, я думаю, что ваша ошибка кода - это использование y
и может быть исправлено до:
Dim x, y, r As Integer 'x is customer , y is rows
For x = 1 To 25
For y = 2 To 102 Step 4
ActiveWorkbook.NAmes.Add Name:="Name" & x, RefersToR1C1:="='Main '!R" & y & "C4"
Next y
Next x
Протестированный код, показывающий имя менеджера:
![enter image description here](https://i.stack.imgur.com/9Dd9x.png)
Посмотрев на это, я считаю, что вам нужно исправить свой цикл x и присвоить имена ... у вас есть перезаписывающие имена, что означает, что вы сами увидите D102 для каждого столбца, как показано на рисунке выше.
Возьмите удар с помощью:
Dim x as long, y as long, r As long 'MUST STATE "AS" FOR EACH VARIABLE, OTHERWISE THEY ARE VARIANT (X, Y, R AS INTEGER MEANS X AND Y ARE VARIANT)
r = 1
For x = 1 To 25
For y = 2 To 102 Step 4
ActiveWorkbook.NAmes.Add Name:="Name" & r, RefersToR1C1:="='Main '!R" & y & "C4"
r = r+1 'this should fix all of your names to keep showing up
Next y
Next x
См. Теперь обновленный менеджер имен:
![enter image description here](https://i.stack.imgur.com/3WyB9.png)
После всего этого вам все еще нужно выяснить, что вы пытаетесь сделать с данными ... x
не проблема (на самом деле не используется)
Стоит ли смотреть на нижеследующее? Или, возможно, x
должен ссылаться на компонент столбца в вашем R1C1 (в настоящее время вы используете y
в качестве строки).
Dim y As Long, r As Long ', x as long
r = 1
'for x = 1 to 25
For y = 2 To 102 Step 4
ActiveWorkbook.Names.Add Name:="Name" & r, RefersToR1C1:="='Main '!R" & y & "C4" 'or maybe: "='Main '!R" & y & "C" & x ???
r = r + 1 'this should fix all of your names to keep showing up
Next y