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

Problemen met het opzoeken van waarden in het werkblad

Status
Niet open voor verdere reacties.

SylvainV

Gebruiker
Lid geworden
4 aug 2015
Berichten
22
Hallo,

Ik zit al een tijdje vast op de volgende fout: In cel B4 staat een waarde (bijv 1234567432), dezelfde waarde staat op één van de werkbladen in het bestand. Ik wil deze cel opzoeken en dan ernaartoe springen. Ik krijg de melding dat er een Ongeldige of niet-gekwalificeerde verwijzing is, deze komt bij het .find gedeelte. Dit is nu mijn code:

Code:
Sub Zoeken()
    Dim FindString As String
    Dim Rng As Range
    Dim sheetCount As Integer
Dim counter As Integer
Dim currentSheet As Integer
    
    FindString = Sheets("Zoekblad").Range("B4").Value
    
   If Trim(FindString) <> "" Then
   sheetCount = ActiveWorkbook.Sheets.Count
   For counter = 2 To sheetCount
    Sheets(counter).Activate
   
            Set Rng = .Find(What:=FindString, _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False)
                            Next counter
            If Not Rng Is Nothing Then
                Application.Goto Rng, True
            Else
                MsgBox "Depot niet gevonden"
            End If
            
            
    End If
  
End Sub

Bij voorbaat dank

Edit: Ik krijg de code wel werkend als ik de loop door de werkbladen weghaal en een With stukje gebruik (bijv With Sheets("Piet").Range("B:B")). Maar dan worden dus niet alle bladen doorzocht
 
Laatst bewerkt:
Moet je voor laatste END IF geen NEXT zetten??
 
Code:
Sub Zoeken()
    Dim FindString As String
    Dim Rng As Range
    Dim i As Integer
    
    FindString = Sheets("Zoekblad").Range("B4").Value
    
    If Trim(FindString) = "" Then Exit Sub
    For i = 2 To ActiveWorkbook.Sheets.Count
        Set Rng = Sheets(i).UsedRange.Find(FindString, LookAt:=xlWhole)
        If Not Rng Is Nothing Then
            Application.Goto Rng, True
            Exit Sub
        End If
    Next
    MsgBox "Depot niet gevonden"
End Sub

Maar je kunt natuurlijk ook gewoon de ingebouwde zoekfunctie van excel gebruiken om de hele werkmap te doorzoeken op een string (CTRL-F)
 
Laatst bewerkt:
Werk uitstekend, ontzettend bedankt.

Nou had ik nog 2 aanvullende vragen (weet niet of ik hier een apart topic voor moet aanmaken)

Na het zoeken sprint de macro nu naar de desbetreffende cel (in kolom B), graag zou ik naar diezelfde rij springen, maar dan kolom A, omdat nu de headers in kolom A wegvallen (kunt wel gewoon naar links scrollen maar dat is niet practisch)

Graag zou ik ook kunnen zoeken op naam, of een deel van de naam, en als de naam meermaals voorkomt, dat de gebruiker de optie heeft om verder te zoeken naar een volgend resultaat, is dit te realiseren?

Alvast dank
 
Dat kun je allemaal toch gewoon met CTRL-F voor elkaar krijgen?
 
Dat gaat alleen als de waarde zich op het huidige werkblad bevindt.
Degenen voor wie het bestemd is zijn niet allen even technisch en daarom moet het zeer gebruiksvriendelijk zijn.

Daarom wil ik ook graag dmv een hoofdblad alle andere bladen kunnen doorzoeken
 
Dat gaat alleen als de waarde zich op het huidige werkblad bevindt.

Dat is niet juist. CTRL-F is een zeer gebruiksvriendelijke functie waarmee je ook de hele werkmap kunt doorzoeken. Je kunt bovendien instellen of je op het hele woord of een deel van het woord wil zoeken. Kijk maar eens goed.
Ik vind het onnodig om functionaliteit te gaan programmeren die puik zit ingebouwd.
 
Na het zoeken springt de macro nu naar de desbetreffende cel (in kolom B), graag zou ik naar diezelfde rij springen, maar dan kolom A, omdat nu de headers in kolom A wegvallen (kunt wel gewoon naar links scrollen maar dat is niet practisch)

Wat betreft deze vraag, zou je hiermee kunnen helpen?
 
Code:
Sub Zoeken()
    Dim FindString As String
    Dim Rng As Range
    Dim i As Integer
    
    FindString = Sheets("Zoekblad").Range("B4").Value
    
    If Trim(FindString) = "" Then Exit Sub
    For i = 2 To ActiveWorkbook.Sheets.Count
        Set Rng = Sheets(i).UsedRange.Find(FindString, LookAt:=xlWhole)
        If Not Rng Is Nothing Then
            Application.Goto Rng.Offset( ,-1), True
            Exit Sub
        End If
    Next
    MsgBox "Depot niet gevonden"
End Sub
 
Exact, ik dacht dat het zoiets moest zijn maar wist niet hoe het te verwerken in de code
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan