• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Blijft hangen in if-loop.......

Status
Niet open voor verdere reacties.

Demeter

Verenigingslid
Lid geworden
24 mei 2006
Berichten
1.659
Gegroet,

Excel blijft hangen in mijn if-loop.
Iemand die kan aanwijzen waardoor hij er niet uitkomt? (volgens mij ligt het aan dat ik d (als Range) vul met een variable (TmpVal) als string, maar wat het dan wel moet zijn?)

Code:
Sub Test()

 Dim TmpVal As String
 Dim TmpSht As Integer
 Dim d      As Range
 
Application.ScreenUpdating = False
Sheets(3).Visible = True
Sheets(3).Select                    'Selecteer blad hulpblad
Rows("6:7").Select                  'selecteer de rijen 6 en 7
Selection.Copy                      'kopieer de selectie
 
' vraag naar naam
TmpVal = InputBox("Bij wie wilt u een project toevoegen?", "Project toevoegen")
' vraag naar periode 1 (1tm26) of 2 (27tm52)
TmpSht = InputBox("In welke periode wilt u het project toevoegen? Kies 1 of 2?", "Selectie blad")

Sheets(TmpSht).Select

For Each d In Sheets(TmpSht).Range("A1:A20")
     If d = TmpVal Then
        Rows(d.Row).Select
        Selection.Insert Shift:=xlDown    'insert de gekopieerde rijen
        Application.CutCopyMode = False   'na invoegen geen data meer op klipbord
     End If
Next

Set d = Nothing                   'maak variabele d leeg
Application.ScreenUpdating = True

End Sub

Bijvoorbaat dank,
Ferenc
 
Hoi Demeter,

Je for-next lus bluif hangen omdat:

Code:
If d = TmpVal Then
        Rows(d.Row).Select
        [B]Selection.Insert Shift:=xlDown    [/B]'insert de gekopieerde rijen
        Application.CutCopyMode = False   'na invoegen geen data meer op klipbord
End If

Je in het stuk dat VET staat, een regel toevoegd. De eerst volgende keer dat hij weer checked If d = TmpVal is deze dezelfde regel als in de vorige loop doordat je een regel hebt ingevoegd.

Ik denk dat de makelijkste oplossing is dat je na Application.CutCopyMode = False de volgende regel toevoegd.
Code:
Exit for
Hiermee wordt je for-next lus onderbroken.

Suc6
 
Yep

Thanks Mr. Parker:thumb:

Zal later mijn code proberen anders te schrijven zodat dit niet nodig is.
Lijkt mij meer een pleister op de wond dan een echte genezing!!!

groet,
Ferenc
 
Met rijen en kolommen verwijderen en invoegen:

steeds van onder naar boven werken (of dus van rechts naar links voor kolommen)

Met een For next loop:

For rij = 20 to 1 step -1

'code

Next

Wigi
 
Thanks Wigi,

Zal kijken of ik er uit kom, post hier mijn code wel als ik hem afgerond heb.
Zeg ter controle van de efficientie van de code.


groet,
Ferenc
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan