For next, maar hoe?

Status
Niet open voor verdere reacties.

Woffels

Gebruiker
Lid geworden
8 jan 2006
Berichten
249
Ik heb een stukje code waarvan ik denk dat het eenvoudiger kan met een for next lus. Ik zou alleen niet weten hoe.

Code:
[Serial1].Value = a1
[Serial2].Value = a2
[Serial3].Value = a3
[Serial4].Value = a4
[Serial5].Value = a5
[Serial6].Value = a6
[Serial7].Value = a7
[Serial8].Value = a8
[Serial9].Value = a9
[Serial10].Value = a10
[Serial11].Value = a11
[Serial12].Value = a12
[Serial13].Value = a13
[Serial14].Value = a14
[Serial15].Value = a15
 
Plaats een voorbeeld documentje.
 
Hier is ie.
De variabelen a1 tm a15 worden ergens anders in de code gevuld met en waarde, voor dit voorbeeld heb ik ze even gevuld in dezelfde Sub.

Het gaat me er in principe om, hoe het onderste gedeelte er uit ziet in een for-next lus.
 

Bijlagen

  • ForNext.xlsm
    19,5 KB · Weergaven: 29
Voor beide stukjes in je code:
Code:
For i = 1 To 15
    Cells(i, 1) = i * 10
Next i

For i = 1 To 15
    Range("Serial" & i) = Range("A" & i) [COLOR="#008000"]'Of = Cells(i, 1).Value[/COLOR]
Next i

Of voor dat 2e stukje:
Code:
Range("C4:C18").Value = Range("A1:A15").Value
En zo zijn er nog meer mogelijkheden.
 
Laatst bewerkt:
Het eerste stukje in de code gebruik ik alleen in dit voorbeeld om variabelen a1 tm 15 met een waarde te vullen. Die getallen (nu 10 tm 150) kan van alles zijn en worden ergen anders in de code gevuld. Dus de inhoud van die variabelen is niet relevant en kan dus van alles bevatten.
Eerste stukje:

Code:
a1 = 10
a2 = 20
a3 = 30
a4 = 40
a5 = 50
a6 = 60
a7 = 70
a8 = 80
a9 = 90
a10 = 100
a11 = 110
a12 = 120
a13 = 130
a14 = 140
a15 = 150

Het gaat om het tweede stukje, hoe dat met For-Next te doen. Dus die variabelen a1 tm a15 moeten ook in de lus mee optellen en zijn geen range, maar een variabele.

Code:
For i = 1 To 15
    Range("Serial" & i) = Range("A" & i) 
Next i
 
Dan zo:
Code:
Dim a(1 To 15) As Integer
For i = 1 To 15
    a(i) = i * 10
    Range("Serial" & i) = a(i)
Next i
 
Laatst bewerkt:
Ja, sorry, ik had hem idd in een ander bericht gepost, ik dacht dat ik deze al had afgesloten.
Zie het bestand dat ik bij deze invoeg, het gaat me alleen om het vereenvoudigen van het laatste gedeelte van de code. a1 tm a15 kunnen willekeurige waardes bevatten.

Code:
[Serial1].Value = a1
[Serial2].Value = a2
[Serial3].Value = a3
[Serial4].Value = a4
[Serial5].Value = a5
[Serial6].Value = a6
[Serial7].Value = a7
[Serial8].Value = a8
[Serial9].Value = a9
[Serial10].Value = a10
[Serial11].Value = a11
[Serial12].Value = a12
[Serial13].Value = a13
[Serial14].Value = a14
[Serial15].Value = a15
 

Bijlagen

  • ForNext.xlsm
    19,6 KB · Weergaven: 23
Code:
ar = Array(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15)
  For j = 0 To UBound(ar)
    Range("Serial" & j + 1).Value = ar(j)
  Next j
 
Het is absurd, want tautologisch, iedere afzonderlijke cel in range C4:C18 een rangename toe te wijzen. Het cel-adres fungeert nl. al als named range.

De opslossing:

Code:
Range("C4:C18")=application.transpose(array(1,2,3,4,5,6,7,8,9,10,11,12,13,14))

Geen lus nodig, alleen wat basale VBA-kennis.
 
Laatst bewerkt:
Ik ben heel erg blij dat ik vaak zo snel en goed geholpen wordt op helpmij.nl. Een prachtig forum waar je ook zonder basale (VBA)kennis een heel eind komt en ontzettend veel van leert.
Waarvoor dank.
 
Het is absurd, want tautologisch, iedere afzonderlijke cel in range C4:C18 een rangename toe te wijzen. Het cel-adres fungeert nl. al als named range.

Ik doe dit, omdat ik die benaming (met oplopende nummers) gebruik in een functie en schept ook wat duidelijkheid in de code.
 
Mij lijken c4 t/m C18 ook oplopende nummers (althans in het Nederlands).
 
15 variabelen gebruiken en deze wegschrijven in 15 gedefinieerde bereiken duidt niet echt op een logische opzet.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan