#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. Возможно, вам захочется взглянуть на документацию по диапазону. Элемент и, возможно, также диапазон. Ячейки . Они довольно четко объясняют, как работает индексация, и показывают, почему ваша последняя версия фактически всегда работает для одномерных диапазонов.