Адрес отдельных ячеек в одномерном диапазоне

#excel #vba

#excel #vba

Вопрос:

Я хотел бы адресовать отдельные ячейки в одномерном диапазоне. В этом случае я хочу, чтобы объект диапазона OneDimRange указывал на вторую ячейку в одномерном диапазоне:

 Dim OneDimRange as Range
Dim SingleCellRange as Range

Set OneDimRange = Range("B5:B15")
x = 2 'should be B6

'THOSE NOTATIONS DON'T WORK:
Set SingleCellRange = OneDimRange.Cells(x,1)
Set SingleCellRange = OneDimRange.Cells(x,0)
Set SingleCellRange = OneDimRange.Cells(x)
  

Что именно представляет собой обозначение для одномерного диапазона?

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

1. Чтобы доказать, что вы ошибаетесь в двух учетных записях, попробуйте следующую строку после каждой из Set строк: Debug.Print SingleCellRange.Address(0, 0) и посмотрите в немедленном окне (CTRL G) для получения результатов.

2. Set SingleCellRange = OneDimRange.Cells(x, 1):Debug.Print SingleCellRange.Address ВОЗВРАТ $B$6

3. Как именно вы определили, что они «не работают»? К вашему сведению Cells() , он основан на одном (для числовых аргументов) и может быть задан одним или двумя аргументами (числовым, затем необязательным числовым / строковым). Стоит отметить, что вы можете индексировать вне диапазона, и Excel не будет жаловаться, если результатом является допустимый диапазон, Range("A1").Cells(2, 2) например, B2.

4. @all спасибо за ваши комментарии, оказывается, это была проблема с Excel, помог перезапуск приложения. Спасибо за вашу помощь!

5. Возможно, вам захочется взглянуть на документацию по диапазону. Элемент и, возможно, также диапазон. Ячейки . Они довольно четко объясняют, как работает индексация, и показывают, почему ваша последняя версия фактически всегда работает для одномерных диапазонов.