VBA werkt niet wanneer er gezocht wordt naar combinatie van 2 velden

Status
Niet open voor verdere reacties.

MLJE1980

Gebruiker
Lid geworden
18 mei 2017
Berichten
18
Goeiemiddag,

Met behulp van dit forum gebruik ik een code om o.b.v. 2 celwaardes (B5 en C5) in diverse werkbladen te zoeken naar deze combinatie.
Dit werkt heel goed, alleen kom ik er achter dat wanneer er ook een andere combinatie in een werkblad staat, de code vastloopt en zegt de de combinatie niet gevonden is:
Bijvoorbeeld:

B5: DH03161
C5: 75L

Wanneer alleen deze combinatie in het werkblad staat gaat het goed.
Wanneer er naast DH03161 en 75L ook een combinatie DH03161 en 35L in het werkblad staat gaat het zoeken niet goed.
Hoe kan ik de code aanpassen dat dit wel werkt?


Code:
Sub Zoek_In_Alle_Sheets()
    Dim sht     As Worksheet
    Dim c       As Long
    Dim Rng     As Range
    Dim Genotype    As String
    Dim locatie As String
    Dim afdeling  As String
    Dim rij     As String
    Dim rijnr   As Integer
    Dim potmaat As String
  
        
    Genotype = Sheets("Invulblad").Range("B5")
    potmaat = Sheets("Invulblad").Range("C5")
    
    Application.ScreenUpdating = False
    
Workbooks(2).Activate
    For Each sht In Worksheets
        If sht.Name <> "Invulblad" And sht.Name <> "PlantID" Then
            With sht.UsedRange
                Set Rng = .Find(What:=Genotype)
             
                 If Not Rng Is Nothing Then
                 If Rng.Offset(0, 1) = potmaat Then
                   
                    c = Rng.Column
                    locatie = Rng.Offset(0, -1)
                    afdeling = sht.Name
                    potmaat = Rng.Offset(0, 1)
                    rij = .Cells(1, c - 1)
                    rijnr = Right(rij, 2)
                    Workbooks(1).Activate
                    With Sheets("Invulblad")
                        .Cells(6 + rijnr, 5) = locatie
                        .Cells(6 + rijnr, 6) = afdeling
                        .Cells(6 + rijnr, 7) = potmaat
                     End With
                      Else
                    MsgBox "Combinatie van genotype en potmaat niet gevonden"
                 End If
                 
                End If
                                  
            End With
          Workbooks(2).Activate
          
        End If
       
    Next sht
    Application.ScreenUpdating = True
    Workbooks(1).Activate
End Sub

Alvast bedankt,

Michael
 

Bijlagen

Laatst bewerkt:
En je voorbeeld document?
 
Sorry, ik dacht dat ik ze had toegevoegd.
Ze zijn nu wel als bijlage toegevoegd.
 
Laatst bewerkt door een moderator:
Het zoeken werkt prima, maar door onjuist gebruik van inspringpunten stond de Else op de verkeerde plek.
Probeer het zo eens:
 

Bijlagen

Laatst bewerkt:
Hallo edmoor,

Bedankt, hij vindt nu wel de 35L maar wanneer ik cel C5 aanpas naar 75L wordt deze niet gevonden. Deed hij dit wel bij jou?
Ook geeft hij wanneer ik meerdere werkbladen heb voor ieder werkblad aan wanneer hij niks heeft gevonden, dit hoeft alleen wanneer hij in alle werkbladen niks heeft gevonden.
 
Laatst bewerkt door een moderator:
Nee.
Dat komt omdat hij altijd het eerste Genotype vind en dan kijkt wat er in de volgende cel staat.
Je moet dan in een loop de volgende zelfde Genotype zoeken tot je de gewenste Potmaat tegenkomt.
Dat kan met rng.FindNext:
https://learn.microsoft.com/en-us/office/vba/api/excel.range.findnext

Gebruik ook niet Workbooks(2).Activate maar Windows("Plattengronden Blok A.xlsx").Activate
En ook niet Workbooks(1).Activate maar ThisWorkbook.activate
 
Laatst bewerkt:
Bedankt voor de tips.
Het is mij nu in zoverre gelukt dat beide waardes gezocht en gevonden worden, alleen wanneer er meerdere resultaten zijn laat deze alle resultaten zien. En ik wil alleen de eerst gevonden.
Ik denk dat ik met exit Do dit kan doen, zit ik in de goede richting?

Ik gebruik Workbooks(2).Activate omdat de naam van het 2e bestand dat gebruikt wordt om in te zoeken steeds een andere naam heeft.

Die van ThisWorkbook.activate zal ik aanpassen.
 
Laatst bewerkt door een moderator:
Het is mij inderdaad gelijkt via exit Do.
Nogmaals bedankt voor de tip.
 
Jouw code is volledig overbodig als je gebruik maakt van Excel.
Zet de gegevens uit het bestand plattegrond (zonder tussen n) onder elkaar in een dynamische tabel.
Dan klik je op de kolom 'genotype' en selekteer je het gewenste genotype, vervolgens in de kolom 'potmaat' en selekteer je de gewenste potmaat. Klaar is Kees.
Dan heb je geen enkel forum nodig noch VBA om de lokatie van een 'individu' te bepalen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan