anoniem Geplaatst: 11 mei 2006 Delen Geplaatst: 11 mei 2006 Hoi, Ik was even iets aan het proberen in excel de volgende code [code:1:2c9b6e26d7]Sub RangeNext() Dim counter As Integer Dim i As Variant Dim Rangep1 As Range Set Rangep1 = Range("A1:A100") counter = 0 Rangep1.Select Rangep1.ClearContents For Each i In Rangep1 Rangep1.Offset(counter, 0).Value = counter counter = counter + 1 Next End Sub [/code:1:2c9b6e26d7] als ik deze code run zou de cell A1 waarde 0 krijgen en A2 1 enz enz. Het merkwaardige is nu dat de for lus doorloopt tot cell A200. ik vermoed dat variable i variant daar iets mee te maken heeft maar weet niet hoe ik dit moet oplossen Quote Link naar reactie
anoniem Geplaatst: 11 mei 2006 Auteur Delen Geplaatst: 11 mei 2006 [quote:d1f9554d9c="bertjedeb"] als ik deze code run zou de cell A1 waarde 0 krijgen en A2 1 enz enz. Het merkwaardige is nu dat de for lus doorloopt tot cell A200. ik vermoed dat variable i variant daar iets mee te maken heeft maar weet niet hoe ik dit moet oplossen[/quote:d1f9554d9c] Het heeft niks te maken met counter, maar met het feit dat je een Range van 100 cellen hebt geselecteerd. Met jouw code wordt per iteratie een range van 100 cellen met dezelfde waarde gevuld. Je kan beter met een teller aan de gang. [code:1:d1f9554d9c] dim i as integer dim RangeP1 as Range Set RangeP1 = Range("A1") For i = 0 to 99 RangeP1.Offset(i,0).Value = counter counter = counter + 1 Next [/code:1:d1f9554d9c] Quote Link naar reactie
anoniem Geplaatst: 11 mei 2006 Auteur Delen Geplaatst: 11 mei 2006 oke thanks Quote Link naar reactie
anoniem Geplaatst: 11 mei 2006 Auteur Delen Geplaatst: 11 mei 2006 Met For Each benader je objecten in een collectie. Een Range is zelf een object, geen collectie, wat bijv. Rangep1.Cells weer wel is. Verder gaat je procedure nu de mist in omdat je steeds een hele range (met 1 rij naar beneden opgeschoven) van 100 cellen met een oplopende waarde vult, waardoor bij de 100ste dus rij 100-200 met waarde 99 wordt gevuld. Onderstaande doet het beter: [code:1:4211391f20] Sub RangeNext() Dim i As Integer Dim Rangep1 As Range Set Rangep1 = Range("A1:A10") Rangep1.Select Rangep1.ClearContents For i = 1 To Rangep1.Cells.Count Rangep1.Cells(i, 1).Value = i - 1 Next End Sub [/code:1:4211391f20] Waar dan een gewone For..Next wordt gebruikt. Als je het met een For Each wil doen: [code:1:4211391f20] Sub RangeNext() Dim Rangep1 As Range Set Rangep1 = Range("B1:B10") Rangep1.Select Rangep1.ClearContents counter = 0 For Each c In Rangep1.Cells c.Value = counter counter = counter + 1 Next End Sub [/code:1:4211391f20] Maar dan heb je dus een aparte variabele nodig (counter) die je steeds met 1 moet opplussen, terwijl daar in een gewone For..Next-lus al in is voorzien. Quote Link naar reactie
anoniem Geplaatst: 11 mei 2006 Auteur Delen Geplaatst: 11 mei 2006 Okee, dat kruiste mekaar :-) Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen