#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
вашего исходного кода). Надеюсь, это решит все проблемы? Если да, пожалуйста, отметьте как ответивший.