Страницы: 1
RSS
Что такое Range("A1:D4").Columns(4) ? Что должно вернуть его Count?
 
Доброе утро.
Код
Sub ddd()
Dim x As Range
Set x = Range("A1:D4").Columns(4)
MsgBox TypeName(x) & " - " & x.Address & " - " & x.Count
End Sub
Возвращает: Range - $D$1:$D$4 - 1

Почему? Если Range("A1:D4").Columns(4) это Range и если его адрес D1:D4, то его Count должен быть равно 4.
Ведь Msgbox Range("D1:D4").Count вернёт 4.
?
Изменено: Бахтиёр - 05.03.2018 09:48:00
 
Цитата
Бахтиёр написал: Range("A1:D4").Columns(4) это Range
Это 4-й столбец диапазона 'A1:D4' и его количество равно 1, а адрес в этом диапазоне 'D1:D4'
Согласие есть продукт при полном непротивлении сторон
 
x.Cells.Count возможно вернет 4 :)
F1 творит чудеса
 
Set x = Range("A1:D4").Columns(4) (объект = СТОЛБЕЦ)
Если как Range, то так:
Set x = Range("A1:D4") (объект = диапазон)
Изменено: Пытливый - 05.03.2018 13:03:40
Кому решение нужно - тот пример и рисует.
 
Цитата
Максим Зеленский:  x.Cells.Count возможно вернет 4
Точно.

Пытливый, Максим Зеленский, Sanja, спасибо.
 
В дополнение к предыдущим разъяснениям (для себя, в первую очередь).  Согласно документации Range.Count возвращает число элементов коллекции.  Следующий текст покажет эти элементы:
Код
Sub test()
  Dim rg1 As Range, rg2 As Range
  Dim obj As Object

  Set rg1 = Range(Cells(1, 1), Cells(4, 4))
  Set rg2 = rg1.Columns(4)

  Debug.Print "rg1 objects:"
  For Each obj In rg1
    Debug.Print obj.Address
  Next obj
  
  Debug.Print "rg2 objects:"
  For Each obj In rg2
    Debug.Print obj.Address
  Next obj

End Sub
Владимир
 
Спасибо.
Страницы: 1
Наверх