Een For Next lus die het niet wil doen

Status
Niet open voor verdere reacties.

PJurriaans Sr

Gebruiker
Lid geworden
17 sep 2007
Berichten
134
'Halo allemaal,
'Wie kan en wil mij helpen?Wat doe ik hier nu verkeerd????:shocked:

Code:
Sub Koppelmnd()
'plaatst aray maanden in "jan"
  
  Range("U1").Select
    ActiveCell.FormulaR1C1 = "jan"
    Selection.AutoFill Destination:=Range("U1:U17"), Type:=xlFillDefault
    Range("U1:U17").Select
'Koppeld van 12 maanden C5 met C6 van vorig blad
  
  Dim Werkblad As Worksheet
    Dim i As Integer
    Dim r As Integer
 For Each Werkblad In ActiveWorkbook.Worksheets
       i = i + 1
       r = r + 2
       Werkblad.name = Range("U" & i) 'hier moet de maand geactiveerd worden
       Range("C5").Select
       ActiveCell.FormulaR1C1 ="=("U" & r)!R[1]C" 'Hier moet de koppeling met de     
       bronmaand  komen maar hij verwacht hier end of statement:confused:
    
 Next Werkblad
     [U1:U17].Delete
 End Sub
Het is de bedoeling dat bovenstaand prog.de formule "=Jan!C6" in feb C5 plaatst.
en dat dan voor alle 12 maanden.wie weet hoe dat moet en wil u het mij dan
onthullen.bvd;)
vrgr Peter sr
 
Laatst bewerkt door een moderator:
'Halo allemaal,
'Wie kan en wil mij helpen?Wat doe ik hier nu verkeerd????:shocked:

Sub Koppelmnd()
'plaatst aray maanden in "jan"

Range("U1").Select
ActiveCell.FormulaR1C1 = "jan"
Selection.AutoFill Destination:=Range("U1:U17"), Type:=xlFillDefault
Range("U1:U17").Select
'Koppeld van 12 maanden C5 met C6 van vorig blad

Dim Werkblad As Worksheet
Dim i As Integer
Dim r As Integer
For Each Werkblad In ActiveWorkbook.Worksheets
i = i + 1
r = r + 2
Werkblad.name = Range("U" & i) 'hier moet de maand geactiveerd worden
Range("C5").Select
ActiveCell.FormulaR1C1 ="=("U" & r)!R[1]C" 'Hier moet de koppeling met de
bronmaand komen maar hij verwacht hier end of statement:confused:

Next Werkblad
[U1:U17].Delete
End Sub
Het is de bedoeling dat bovenstaand prog.de formule "=Jan!C6" in feb C5 plaatst.
en dat dan voor alle 12 maanden.wie weet hoe dat moet en wil u het mij dan
onthullen.bvd;)
vrgr Peter sr

Begrijp niet echt helemaal wat je bedoelt. Kan je een voorbeeld bestand plaatsen met uitleg wat je graag wilt ?
 
Even losstaand of je code nu doet wat het moet doen: dit gaat zeker fout:
Code:
ActiveCell.FormulaR1C1 ="=("U" & r)!R[1]C" '

Mogelijk dat je zoiets bedoeld:
Code:
ActiveCell.FormulaR1C1 = "=(""U" & r & """)!R[1]C"
wat dan resulteert in
Code:
=("U1")!R[1]C

het is waarschijnlijk een stuk simpeler als je even je sheet plaatst.
 
Laatst bewerkt door een moderator:
Een For Next lus die het niet wil doen R1

ReneDirks Bedankt voor de reactie.heb de Sheet geprobeerd hier neer te zetten
je wil niet weten wat je toen hier te zien kreeg.heb ook de code die je bij je reactie
heb gevoegd
Code:
ActiveCell.FormulaR1C1 = "=(""U" & r & """)!R[1]C"
geprobeerd
maar kreeg toen het bericht dat Aplication-Defined or Object-Defined error.
ook de code
Code:
Werkblad.name = Range("U" & i)
was niet goed daar kreeg ik het
bericht dat hij een Sheet niet met de zelfde naam kon rename.:confused:

Ik begrijp dat ik het niet duidelijk heb kunnen maken wat ik wil excuses daar
voor,het is mishien te complex.Ik doe nog een poging.

12 Sheets met als naam de maanden (Deze zijn reeds aanwezig)
feb C5 moet naar jan C6 kijken
mrt C5 moet naar feb C6 kijken

Dat deed ik voorheen met 12 maal deze code
Code:
Sheets("jan").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=oud!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
  
    Sheets("feb").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=jan!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
Toen kwam ik op het idee dat het ook anders kon met een for next lus
Dus heb ik tijden zitten puzelen,het resultaat is U bekent:shocked:

vrgr Peter sr:)
gast0667 Ook bedankt mischien dat
bovenstaande iets duidelijker is.
 
Laatst bewerkt door een moderator:
Bedoel je iets als dit ?

Code:
Sub Test()

'December wordt nieuwe waarde. Nov neemt Dec over. Oude neemt Jan over.
check = False
A = 1

Do
Do While check = False
    If A = 1 Then
        Worksheets("Oud").Select
        Worksheets("Oud").Range("A1").Value = Worksheets(A).Range("A1").Value
        MsgBox "ok"
        Worksheets(A).Select
        Worksheets(A).Range("A1").Value = Worksheets(A + 1).Range("A1").Value
        MsgBox "ok"
        A = A + 1
    ElseIf A = 12 Then
        Worksheets(A).Select
        MsgBox "Vul nieuwe waarde van december in."
        check = True
    Else
        Worksheets(A).Select
        Worksheets(A).Range("A1").Value = Worksheets(A + 1).Range("A1").Value
        MsgBox "ok"
        A = A + 1
    End If
    Loop
Loop Until check = True

End Sub

Sub Test1()

'Januari wordt nieuwe in te vullen waarde. Feb neemt waarde van Jan over etc. Oud neemt Dec over.
check = False
A = 13

Do
Do While check = False
    If A = 1 Then
        Worksheets(A).Select
        MsgBox "Vul nieuwe waarde van januari in."
        check = True
    ElseIf A = 13 Then
        A = A - 1
        Worksheets("Oud").Select
        Worksheets("Oud").Range("A1").Value = Worksheets(A).Range("A1").Value
        MsgBox "ok"
        Worksheets(A).Select
        Worksheets(A).Range("A1").Value = Worksheets(A - 1).Range("A1").Value
        MsgBox "ok"
        A = A - 1
    Else
        Worksheets(A).Select
        Worksheets(A).Range("A1").Value = Worksheets(A - 1).Range("A1").Value
        MsgBox "ok"
        A = A - 1
    End If
    Loop
Loop Until check = True

End Sub
 
Laatst bewerkt door een moderator:
gast0667 Dat was me even wat jou prog gekopieerd en gerund en me er in verdiept
ik ben dr nog :confused: van,dit gaat volkomen boven mijn pet,ikgeloof ook niet dat
het is wat ik bedoel.Maar het kan nu niet meer mis gaan het program hier onder
doet precies wat ik wil.Wanneer je dit prog. rund met 1 Sheet die oud heet en 12 Sheets
die de maanden als naam hebben bvb jan,feb.en 1 Sheet met de naam balans dan
is het resultaat dat dat iedere Sheet met C5 naar C6 van zijn voorganger kijkt.
Mijn wens is om het prog.wat kleiner te maken
VrGr Peter sr;)

Code:
Sub Saldo()
    Sheets("oud").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=PERSONAL.XLS!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("jan").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=oud!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("feb").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=jan!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("mrt").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=feb!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("apr").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=mrt!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("mei").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=apr!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("jun").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=mei!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("jul").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=jun!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("aug").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=jul!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("sep").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=aug!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("oct").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=sep!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("nov").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=oct!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("dec").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=nov!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
    Sheets("balans").Select
    ActiveCell.Offset(-2, -17).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=nov!R[1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
 
Laatst bewerkt door een moderator:
Dus als ik het goed begrijp heb je onderstaand in de JUISTE volgorder:

Oud - Jan - Feb - Maart - April - Mei - Juni - Juli - Aug - Sep - Okt - Nov - Dec - Balans

Januari kijkt naar cel C6 van sheet Oud, die waarde komt in Januari C5
Februari kijkt naar cel C6 van sheet Jan, die waarde komt in Februari C5
t/m December.

Wat doet Balans ???
En wat moet er nu precies gekopieerd worden ?? Alleen tekst of ook de opmaak ??
 
Laatst bewerkt door een moderator:
Code:
Sub Saldo()
[B]'Let op: volgende formule wordt geplaats --> =NAAM!C6 --> NAAM is dan de naam van het voorgaande blad.[/B]Check = False
A = 1

Do
Do While Check = False
    If A = 14 Then
        [I]MsgBox "Alle formules zijn ingevuld." & vbnewline & "Laatste plaatsing was '=Dec!C6' welke in cel 'C5' van balans is geplaatst."[/I]
        Check = True
    Else
        Worksheets(A).Activate
        Worksheets(A + 1).Range("C5").Value = [B]"=" & ActiveSheet.Name & "!C6"[/B]
        A = A + 1
    End If
Loop
Loop Until Check = True

End Sub

Geloof dat je dit bedoelt ?
Let op: de exacte formule moet je hier wel specificeren, om hem om te bouwen (eventueel) kan je het volgende wijzigen:
"=" & ActiveSheet.Name & "!C6"
=> met "=" geef je aan dat het een formule/verwijing is.
=> ActiveSheet.Name is de naam van het voorgaande werkblad.
=> met "!" geef je aan dat de formule naar een werkblad verwijst.
=> met "C6" geef je aan naar welke cel de formule van het voorgaande werkblad moet kijken.

E.e.a. kan je dus aanpassen.
werkblad 'Jan' heeft de formule in C5 van: "=Oud!C5"
werkblad 'Feb' heeft de formule in C5 van: "=Jan!C5"
etc.
Werkblad 'Balans' heeft de formule in C5 van: "=Dec!C5"

Let wel op dat de werkbladen oplopend zijn.
Hoor het graag.
 
For next lus doet het nu wel

gast0667.;) Je ziet het al een juweeltje hij werkt en is zeer leerzaam voor mij:thumb::thumb: Niets hoefde ik te veranderen niet te geloven een ellelang
program in zo klein lusje geweldig dank dank.Ik ga kijken of ik het zo kan
begrijpen dat het ook met mijn andere programma's kan werken :thumb:

zeer hartelijke groet Peter jr.
 
Laatst bewerkt door een moderator:
gast0667.;) Je ziet het al een juweeltje hij werkt en is zeer leerzaam voor mij:thumb::thumb: Niets hoefde ik te veranderen niet te geloven een ellelang
program in zo klein lusje geweldig dank dank.Ik ga kijken of ik het zo kan
begrijpen dat het ook met mijn andere programma's kan werken :thumb:

zeer hartelijke groet Peter jr.
Je heb er een behoorlijk puinhoop van gemaakt. Dit eerst lezen is het advies. http://www.helpmij.nl/forum/showthread.php?t=321171
 
Laatst bewerkt door een moderator:
Michel Zorry neem het mij niet kwalijk,in de aanhef van mijn vraag zat een fout,
deze fout heb ik geprobeerd te herstellen maar dat bleek niet mogelijk.

De onduidelijkheid in de aanhef onderschrijf ik,het spijt mij zeer.Vraag stellen
is moeilijk ik heb lang nagedacht over de vraag maar kon geen vraag bedenken
die de lading dekte.Zelf heb ik ook last van onduidelijkheid.

Dus nogmaals excuus. vrgr Peter sr.

ps
Voor deze ontboezeming weet ook geen duidelijke aanhef.
 
Michel Zorry neem het mij niet kwalijk,in de aanhef van mijn vraag zat een fout,
deze fout heb ik geprobeerd te herstellen maar dat bleek niet mogelijk.

De onduidelijkheid in de aanhef onderschrijf ik,het spijt mij zeer.Vraag stellen
is moeilijk ik heb lang nagedacht over de vraag maar kon geen vraag bedenken
die de lading dekte.Zelf heb ik ook last van onduidelijkheid.

Dus nogmaals excuus. vrgr Peter sr.

ps
Voor deze ontboezeming weet ook geen duidelijke aanhef.
Het was niet zozeer je topictitel, het was de code die voor een wanboel zorgde. Ik heb het aangepast dus geen man overboord. Ga rustig verder. ;)
 
Hallo Michel.

Het was niet zozeer je topictitel, het was de code die voor een wanboel zorgde. Ik heb het aangepast dus geen man overboord. Ga rustig verder.

Nog even ik ben dom dit is geen grap:mad: die code is een opgeschoonde Macro, kan je me niet wat bij spijkeren ik loop steeds tegen het fijt aan dat de vraag die ik stel niet
over komt:confused:
Toch bedankt voor de opbouwend kritiek.
vriendelijke groet Peter sr.
 
HNog even ik ben dom dit is geen grap:mad: die code is een opgeschoonde Macro, kan je me niet wat bij spijkeren ik loop steeds tegen het fijt aan dat de vraag die ik stel niet
over komt:confused: Toch bedankt voor de opbouwend kritiek.
vriendelijke groet Peter sr.
Er komen gerust wel de nodige experts voorbij, rustig maar. En dom? wat is dom. De één heeft verstand van auto's, de ander van computers.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan