Do Loop

Status
Niet open voor verdere reacties.
Eric

als ik je code uitvoer

Code:
Sub lus()
For Each c In [B12:B5000]
    If IsEmpty(c) Or c.Value = "" Then Exit For ' (breekpunt voor laatste lege cel, of om iets in te vullen)
    If c.Value <> 5000 Then Exit For ' (of doe iets)
    If IsError(c.Value) = True Then c.Select: Exit Sub ' (óf doe iets)
Next c
End Sub

Krijg ik een Type mismatch error. Daar zat ik ook al mee te worstelen, vandaar dat er nog geen antwoord was...

Wigi

was een globaal voor beeld, kijk in de zip voor werking

gr eric
 

Bijlagen

Zoals ik het zie, is dit de oplossing:

Code:
Sub CommandButton1_Click()
Dim c As Range

For Each c In Range("B12:B29")
    On Error Resume Next
        If IsError(c) Then Exit For
        If c.Value = 5000 Then
            GoTo volgende
        Else
            Exit For
        End If
volgende:
Next c
On Error GoTo 0
c = "Korting staal"
c.Offset(, 4) = -20
c.Offset(, 8).Formula = "=SUM(G12:G" & c.Row - 1 & ")*e30/100"

End Sub

Kleurtjes, waarden invoeren e.d. waren niet gevraagd in deze topic.

Wigi
 
Nee dat had hij ook niet gevraagd, hij vroeg ;
De volgende loop wil ik ook laten stoppen als aan de voorwaarde wordt voldaan als de inhoud van de cel #N/B is
Dus in het voorbeeld laat ik hem zien dat de routine getropt kan worden bij a/gatal, b/fout, en c/als er een lege cell is.
Verder zijn er meerde #N/W dus de routine mag pas stop na de laatste #N/W, en die van hem stop al bij de eerste.
Ook heeft hij een breekpunt gemaakt op de waarde <> 5000, dit zorgt er voor dat hij de loop nooit af kan maken als er een andere waarde in zit, en zal hij nooit de andere berekeningen kunnen uitvoeren aangezien hij een soort van datatbase heeft is dat niet handig

Samengevat; ik geef hem een voorbeeld dat hem veder op weg help maar hij zelf bepaalt wat er op kan volgen.

Mvg eric
 
Nee dat had hij ook niet gevraagd, hij vroeg ;
De volgende loop wil ik ook laten stoppen als aan de voorwaarde wordt voldaan als de inhoud van de cel #N/B is
Verder zijn er meerde #N/W dus de routine mag pas stop na de laatste #N/W, en die van hem stop al bij de eerste.

Dat die van hem bij de eerste stopt, is net de vraag. Wie zijn wij om het anders te willen?

Het is mijn ervaring hier dat je eerst voor een vraag zoveel mogelijk de code moet schrijven die de vraagsteller wil, en pas dan uitbreidingen kan voorstellen, op basis van eigen ervaring en inschatting. Laten we best nu maar even afwachten wat Jan zelf ervan vindt.

Gr.,

Wigi
 
hmm mee eens.

Erik,Wigi, Axel,

Dank voor jullie inspanningen tot zover. Ik ben door drukke werkzaamheden elders nu even niet in de gelegenheid e.e.a. te beoordelen. Feit blijft, dat door een zoekactie er in de betreffende cel #N/B verschijnt en ik deze niet door iets anders kan vervangen.

mvrgr

jan2007
 
Erik,Wigi, Axel,

Dank voor jullie inspanningen tot zover. Ik ben door drukke werkzaamheden elders nu even niet in de gelegenheid e.e.a. te beoordelen. Feit blijft, dat door een zoekactie er in de betreffende cel #N/B verschijnt en ik deze niet door iets anders kan vervangen.

mvrgr

jan2007

Zoals ik het zie, is dit de oplossing:

Code:
Sub CommandButton1_Click()
Dim c As Range

For Each c In Range("B12:B29")
    On Error Resume Next
        If IsError(c) Then Exit For
        If c.Value = 5000 Then
            GoTo volgende
        Else
            Exit For
        End If
volgende:
Next c
On Error GoTo 0
c = "Korting staal"
c.Offset(, 4) = -20
c.Offset(, 8).Formula = "=SUM(G12:G" & c.Row - 1 & ")*e30/100"

End Sub

Kleurtjes, waarden invoeren e.d. waren niet gevraagd in deze topic.

Wigi

Goede morgen Wigi,

Dit is de oplossing die ik zoek. (Ik heb eindelijk weer wat tijd gevonden om jullie inspanningen te bekijken, hartelijk dank, ook aan Erik en Axel).

mvrgr

Jan2007
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan