powiedzmy mam następujący kod:Pętla przez każdą komórkę w zakresie komórek przy podawaniu obiekt Range
Sub TestRangeLoop()
Dim rng As Range
Set rng = Range("A1:A6")
''//Insert code to loop through rng here
End Sub
Chcę być w stanie wykonać iterację kolekcji Range
obiektów dla każdej komórki określonej w rng
. Koncepcyjnie, chciałbym to zrobić tak:
For Each rngCell As Range in rng
''//Do something with rngCell
Next
wiem mogę rozwiązać ten problem parsowania rng.Address
i budowanie Range
przedmiotów ręcznie, ale mam nadzieję, że jest bardziej bezpośredni sposób, że nie obejmuje parsowanie ciągów.
To działało idealnie, ale jestem zaskoczony, dlaczego zadziałało, ponieważ 'Cells' jest tylko obiektem' Range'. W rzeczywistości usunąłem '.Cells' z' rRng' w linii 'For Each' i nadal działało. Co z 'Range' sprawia, że wygląda jak zbiór' Range'ów? Dziękuję bardzo za Twoją pomoc! –
http://www.dailydoseofexcel.com/archives/2004/07/07/the-strange-object/ Właściwość Komórki jest domyślną właściwością w tym kontekście, dlatego właśnie działa bez niej. W innych kontekstach właściwość domyślna to właściwość Value. Wszystkie obiekty Range są naprawdę obiektami kolekcji, które zawierają obiekty Range - do chyba nieskończoności. Zasięg jest zdecydowanie dziwnym obiektem i łamie paradygmat zbierania obiektów/przedmiotów na każdym kroku. Ale w większości przypadków po prostu działa. :) –
dzięki za dodatkowy wgląd.Szkoda, że nie dowiedziałem się, że "to po prostu działa" z 'Range' około 4 lata temu, kiedy zacząłem robić programowanie VBA :-). –