Я хотел бы выполнить итерацию по строкам на рабочем листе и присвоить полям имен одного столбца (столбец E) значение соответствующей строки в другом столбце (столбец B).
Я хотел бы сделать это таким образом, потому что принцип останется неизменным для добавления, которое будет внесено в этот сценарий для долгосрочного обслуживания. Например, если бы я делал это вручную, я бы активировал ячейку "E2", щелкнул поле с именем и набрал "Coil_Width", который является значением ячейки "B2". Это правильно добавляет имя в менеджер имен, и я могу динамически изменить значение, набрав что-то в строке формул для этой ячейки. Я пытался назначить через eCell.Свойство Name = (и т.д.), Но, похоже, оно не работает для ячеек так же, как для свойства range, потому что я получаю ошибку, определенную приложением (1003).
Также с использованием стандарта
ActiveWorkbook.Names.Add Name:=bCell.Value, RefersTo:= eCell.Address()
просто добавляет имя в диспетчер имен и устанавливает для RefersTo значение «$ E $ 2» или любую другую ячейку (я думаю, что это правильно), но значение также устанавливается на "E2" (и не может быть изменено даже при вводе вручную значение в строке формул для этой ячейки. Кроме того, поле имени для этой ячейки по-прежнему отображается как "E2".
Вот пример кода:
For Each bCell In thisWkSht.Range("B:B").Cells
'For Each bCell In thisWkSht.Range("B:B:) - this is the changed line
If bCell.Value = "" Then
'Do Nothing
ElseIf bCell.Value = "Variables" Then
'Do Nothing
'This allows me to skip the first row without much hassle
Else
Set eCell = bCell.Offset(0, 3).Cells
'Set eCell = bCell.Offset(0, 3) - this is the other changed line
eCell.Name = bCell.Value ' This line now correctly assigns the value from my
' B row and column to the name of my E row cell
End If
Next
Мои результаты показывают, что я могу правильно получить доступ к bcell.Значение свойства, но оно ломается во время bCell.Название.Название. Мне кажется, что я просто должен быть в состоянии сделать что-то вроде eCell.Имя = bCell.Значение или что-то подобное, но я еще не получил ничего, кроме ошибки, определенной приложением.
В настоящее время я придерживаюсь метода ячеек, потому что я не уверен, как обратиться к изменяющемуся диапазону выбора в операторе For Each; то есть я могу понять, как обращаться к моей ячейке bCell по всему диапазону («B:B»), но я не знаю, как настроить мою ячейку eCell таким образом, чтобы диапазон, на который она ссылалась, был на самом деле диапазоном смещения bCell на три колонны.
Я что-то упускаю из этих свойств?