Страницы: 1
RSS
Перебрать в цикле значения из диапазона, если диапазон составляет одну ячейку
 
MS Office Excel 2007
Код
    Set sh = Sheets("Лист1")
    Set Result0 = Range(sh.Cells(1, 1), sh.Cells(1, 1)) 'Type Variant/Object/Range, Value "Текст1"
    Set Result1 = Range(sh.Cells(1, 1), sh.Cells(2, 1)) 'Type Variant/Object/Range

Проблема у меня в том, что, вроде бы, применяю свойство Range единообразно. Разница в том, что в случае Result0 исходный диапазон составляет одну ячейку, а в случае Result1 ячеек две.

Я хотел бы перебрать результат в цикле. Пусть ячейка одна, но начало цикла будет совпадать с его концом, в результате будет одна итерация. Но в Result0 располагается как бы значение. И я никак не могу придумать, как можно в цикле перебрать содержимое этих обоих из этих объектов Range.

Применил метод Application.Transpose к обоим результатам. И вот здесь уже заметна разница.
https://d.radikal.ru/d41/1806/82/bf44fb2560fa.png
Разница в том, что в случае с TransposedResult0 я не могу перебрать результат в цикле.  А TransposedResult1 - вполне позволяет обратиться по индексу (TransposedResult1(1), TransposedResult1(2)).

Помогите, пожалуйста, добиться такого же результата для исходного диапазона в одну ячейку.
Изменено: Михаил - 28.06.2018 00:34:33
 
если Вам понятна суть VBA - то все это элементарно, и все совершенно не очевидно в случае наоборот.  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Заданный мной вопрос, отражающий, видимо, суть VBA, для меня неясен.
Если вы желаете упражняться в высокомерии, то у вас получается.

Если же можете помочь разобраться, помогите, пожалуйста.
 
Цитата
Михаил написал: Перебрать в цикле значения из диапазона
Цитата
Михаил написал: Применил метод Application.Transpose
Не понятно что Вам нужно. Перебор в цикле и Application.Transpose разные вещи.
Согласие есть продукт при полном непротивлении сторон
 
Вот собственно циклы.
Код
Sub test()
    Dim result1 As Range, result0 As Range
    Dim rng As Range
    With Sheets("Лист1")
        Set result0 = .Range(.Cells(1, 1), .Cells(1, 1)) 'Type Variant/Object/Range, Value "Òåêñò1"
        Set result1 = .Range(.Cells(1, 1), .Cells(2, 1)) 'Type Variant/Object/Range
    End With
    '  собственно циклы по диапазонам
    For Each rng In result0
        Debug.Print rng.Address
    Next rng
    For Each rng In result1
        Debug.Print rng.Address
    Next rng
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Михаил написал:
Заданный мной вопрос, отражающий, видимо, суть VBA, для меня неясен.
Вы не одиноки! Для меня заданный вами вопрос тоже совершенно не ясен.
Хотите в цикле? Так в чем проблема?
 
Вариант в вашем файле!
"Все гениальное просто, а все простое гениально!!!"
 
Михаил, не нужно обижаться: думаю, что Вы внесли путаницу, добавив упоминание про Transpose.
Страницы: 1
Наверх