как использовать значение ячейки в активном столбце в именованном диапазоне строк в VBA

На листе есть два именованных диапазона, каждый из которых содержит только строку, например Диапазон1 = Диапазон («B5: H5») и Диапазон2 = Диапазон («B9: H9»). Мой вопрос: как я могу ссылаться на ячейку в Range1, скажем, C5, и ячейку в Range2, скажем, C9 в VBA, чтобы я мог что-то сделать со значениями в этих двух ячейках? VBA следует запускать только для активного столбца. Заранее спасибо.


person Leon    schedule 28.06.2017    source источник


Ответы (4)



Использовать можно

Range1.offset() 

метод ссылки на соседнюю ячейку

Дополнительную информацию можно найти здесь.

person The KNVB    schedule 28.06.2017
comment
Спасибо, КНВБ. Я хотел бы использовать имена диапазонов, а не смещение, на случай, если пользователь изменит макет электронной таблицы. Я могу использовать: variable1 = ActiveSheet.Columns (ActiveCell.Column) .Row (5) и variable2 = ActiveSheet.Columns (ActiveCell.Column) .Row (9), но при этом не используются именованные диапазоны. - person Leon; 28.06.2017

Это сработает?

Range("Range1").Cells(1, 1).Select     'Selects Range("B5") - first cell in Range1
Range("Range1").Cells(1, "A").Select   'Also selects first cell in the named range

'copies cell 2 (C9) from Range2 into cell 2 (C5) of Range1; .Cells(row, col)
Range("Range1").Cells(1, 2) = Range("Range2").Cells(1, 2)
person paul bica    schedule 28.06.2017
comment
Спасибо, Пол. Я попробую. - person Leon; 28.06.2017

Используя метод Cells, вы можете указать соответствующую строку, используя Range1.RowRange2.Row), и соответствующий столбец, используя (если я правильно вас понял) Selection.Column.

Так что, возможно, что-то вроде:

Dim Range1 As Range
Dim Range2 As Range
Set Range1 = Range("B5:H5")
Set Range2 = Range("B9:H9")

'Display the value in row 5 for the current column
MsgBox Cells(Range1.Row, Selection.Column).Value
'Display the value in row 9 for the current column
MsgBox Cells(Range2.Row, Selection.Column).Value

'Change row 9 to be the value from row 5
Cells(Range2.Row, Selection.Column).Value = Cells(Range1.Row, Selection.Column).Value

'Display the updated value in row 9 for the current column
MsgBox Cells(Range2.Row, Selection.Column).Value
person YowE3K    schedule 28.06.2017