Я дал Stack Exchange и Google хороший поиск, и я не могу найти точный ответ, который я ищу.Excel VBA: использование свойства .Range.Offset в переменной диапазона возвращает неожиданные значения
У меня возникли проблемы с пониманием значения вернулись с использованием RangeVariable.Range.Offset, НЕ Worksheet.Range.Offset
Я определяю диапазон от А2 до J10, так пропуская первую строку:
Dim myRange As Range
Set myRange = ActiveSheet.Range("A2", "J10")
так что теперь я тест с использованием .offset (0 строк, 9 столбцов):
MsgBox myRange.Range("A1").Offset(0, 9).Address
я вернусь «$ J $ 2», как и следовало ожидать, видя, как «А1» этого диапазона «А2» на листе сам.
Но теперь я использую выше в качестве второго аргумента другого теста собственности .Range:
MsgBox myRange.Range("A1", myRange.Range("A1").Offset(0, 9)).Address
я вернусь «$ A $ 2: $ J $ 3», так это выглядит, как его пропустили строку вычисления второй аргумент, и он заканчивается тем, что он является диапазоном из двух строк, хотя смещение строки равно нулю.
Если я изменяю смещение строки до -1, он возвращает «$ A $ 2: $ J $ 2», поэтому только одна строка.
Обычно я использую Worksheet.Range для определения диапазонов и всегда работает так, как ожидалось. Может кто-нибудь подумать, почему использование RangeVariable.Range.Offset для второго аргумента свойства диапазона может работать таким образом?
Cheers, Стивен
Привет, Тим, это то, что было после. У меня теперь лучший макрос, я ненавижу логику логики, чтобы получить правильный результат. Использование значения смещения строки -1 для того, чтобы оставаться в одной строке, выглядело некрасиво. Большое спасибо! – Stephen