Мне нужна помощь в присвоении имен целому столбцу

#excel #vba

#excel #vba

Вопрос:

Мне нужна помощь в присвоении имен целому столбцу.

 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" amp; x, RefersToR1C1:="='Main '!RyC4"

Next y
Next x
 

Я хочу, чтобы мои результаты были :
имена каждой ячейки, а не содержимое ячейки ***

строка 2, столбец 3 = Имя 1

строка 6, столбец 3 = имя 2

строка 10, столбец 3 = имя 3

И так далее…

Комментарии:

1. Можете ли вы предоставить здесь немного больше контекста? Что диктует имена, где они выводятся и т.д. Ваш заголовок присваивает имя столбцу, но вы указываете ссылки на ячейки в теле сообщения.

Ответ №1:

Хотя я немного теряюсь, я думаю, что ваша ошибка в коде связана с использованием 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" amp; x, RefersToR1C1:="='Main '!R" amp; y amp; "C4"
    Next y
Next x
 

Протестированный код, показывающий диспетчер имен:

введите описание изображения здесь


Посмотрев на это, я считаю, что вам нужно исправить свой цикл 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" amp; r, RefersToR1C1:="='Main '!R" amp; y amp; "C4"
        r = r 1 'this should fix all of your names to keep showing up
    Next y
Next x
 

Смотрите Обновленный диспетчер имен:
введите описание изображения здесь


После всего этого вам все равно нужно выяснить, что вы пытаетесь сделать с данными … 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" amp; r, RefersToR1C1:="='Main '!R" amp; y amp; "C4" 'or maybe: "='Main '!R" amp; y amp; "C" amp; x  ???
    r = r   1 'this should fix all of your names to keep showing up
Next y
 

Комментарии:

1. Спасибо, что исправлена часть проблемы, глупая ошибка. Но теперь проблема в том, что он присваивает name1-25 той же ячейке, которая является C4, R102

2. @MuawiyyahKhan вы опубликовали, когда я заканчивал свой пост (относительно x вашего исходного кода). Надеюсь, это решит все проблемы? Если да, пожалуйста, отметьте как ответивший.