• 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.

Conditionele loop

Status
Niet open voor verdere reacties.

BarryT

Gebruiker
Lid geworden
16 apr 2021
Berichten
30
Hallo,

Ik ben bezig om een macro te schrijven die een bewerking moet uitvoeren enkel en alleen als de waarde in een cel een bepaalde tekst bevat.

Momenteel heb ik de volgende code gebruikt, echter wordt de bewerking ook uitgevoerd wanneer de cel deze tekst niet bevat..


Code:
    Dim Rng As Range
    Dim WorkRng As Range
    Dim c As Range, Rng2 As Range
    Dim xLastrow As Integer

    xLastrow = Cells(Rows.Count, 6).End(xlUp).Row
    
    Set WorkRng = Sheets("Blad1").Range("F2:F" & xLastrow)
    
    On Error Resume Next
    
    xLastrow = WorkRng.Rows.Count
    Application.ScreenUpdating = False
    
    Set Rng2 = Sheets("Blad1").Range("E2:E" & lastrow)

            For xRowIndex = xLastrow To 1 Step -1
                Set Rng = WorkRng.Range("A" & xRowIndex)
                
                For Each c In Rng2
                    If InStr(1, c.Value, "kanaal 400x200") <> 0 Then
  
                       
                            ....

                        
                    End If
                Next
        
            
            Application.ScreenUpdating = True

        Next

Kan iemand mij op het juiste spoor zetten waarom de bewerking toch wordt uitgevoerd ook al bevat de cel een andere afmeting van een kanaal (bvb. "kanaal 200x200").

Het lijkt als of de if conditie wordt overgeslagen
Code:
If InStr(1, c.Value, "kanaal 400x200") <> 0 Then

Alvast bedankt voor de reacties!
 
Laatst bewerkt:
Hierbij een voorbeeldbestand.
 

Bijlagen

  • Testbestand.xlsm
    18,2 KB · Weergaven: 13
spelfoutje er uit gehaald:
Code:
Sub roodkleuren()
    Dim c As Range, Rng2 As Range
    xLastrow = Cells(Rows.Count, 6).End(xlUp).Row
    Set Rng2 = Sheets("Blad1").Range("E2:E" & xLastrow)
    For Each c In Rng2
      If InStr(1, c.Value, "kanaal 400x200") > 0 Then c.Font.Color = -16776961
    Next
End Sub
 
iets anders geschreven

Code:
Sub VenA()  Dim j As Long, ar
  With Sheets("Blad1")
    ar = .Cells(1).CurrentRegion
    For j = 2 To UBound(ar)
      If InStr(1, ar(j, 5), "400x200") Then
        With .Cells(j, 1).Resize(, 5).Font
          .Color = -16776961
          .TintAndShade = 0
        End With
      End If
    Next j
  End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan