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

Alles zoeken

Status
Niet open voor verdere reacties.

Evelthoven

Gebruiker
Lid geworden
26 sep 2006
Berichten
690
Goedemiddag,

Via CTRL+F ga ik zoeken naar bv. het woord "Zuiden" in een bepaald werkblad.
Als ik daarna op de knop Alles Zoeken druk dan krijg ik in het dan openstaande schermpje alle gevonden cellen met inhoud te zien.
Mijn vraag is nu of het mogelijk is om dit overzicht compleet (dus alle kolommen uit het schermpje) af te drukken en / of op te slaan in een nieuw werkblad of tabblad ?

Alvast bedankt voor de reacties.

Gr.
Eric
 
Dat zal je moeten programmeren. Het kan met de FindNext. Zie helpfiles voor een uitgewerkt voorbeeld.

Wigi
 
Hallo Wigi,

Kun je me aub. iets verder op weg helpen.
Ik ben via Alt+F11 naar de VBA-editor gegaan en heb in de werkbalk de knop Help aangeklikt en hierbij de zoekterm "FindNext" ingevoerd en hier krijg ik dan te zien in het voorbeeldje hoe het cijfer 1 vervangen kan worden door 5.
Maar dit is niet de bedoeling. Wat ik eigenlijk wil is als ik heb gevonden wat ik in de lijst heb staan via Alles Zoeken dat deze lijst afgedrukt kan worden of dat de inhoud naar een ander tabblad gekopieerd wordt.

Graag je reactie.

Alvast bedankt,
Eric
 
Klopt dat die code nog niet is wat je moet hebben. Maar daar zul je dan toch zelf moeite voor moeten doen om die code op te stellen. Het geraamte van de code heb je al. Nu nog wegschrijven naar een ander blad, dan met PrintOut het blad afdrukken.
 
Eric

Ik weet dat ik het niet mag doen, maar ... heb weer eens ettelijke overuren gedaan.

Hier is code door mij geschreven om het zoekscherm inclusief "Alles weergeven" compleet te vervangen!

Code:
Sub OverzichtVanZoeken()

Dim c As Range
Dim l As Long
Dim aantal As Long
Dim shGegevens As Worksheet
Dim strName As String

Set shGegevens = Sheets("Gegevens")

With Sheets("Samenvatting")

    .Rows("2:" & Rows.Count).ClearContents
    
    aantal = 0
    
    For Each c In FindAll(ActiveSheet.Cells, "Wigi", xlFormulas, xlPart, xlByColumns, False)
    
        aantal = aantal + 1
        
        'Map
        .Range("A" & 1 + aantal).Value = c.Parent.Parent.Name
        
        'Blad
        .Range("B" & 1 + aantal).Value = c.Parent.Name
        
        'Naam
        On Error Resume Next
        
        strName = c.Name
        
        If Err.Number = 0 Then
        
            For l = 1 To ThisWorkbook.Names.Count
            
                If ThisWorkbook.Names(l).RefersTo = strName Then
                    
                    .Range("C" & 1 + aantal).Value = ThisWorkbook.Names(l).Name
                    
                    Exit For
                    
                End If
                
            Next
        
        End If
        
        On Error GoTo 0
        
        'Cel
        .Range("D" & 1 + aantal).Value = c.Address
        
        'Waarde
        .Range("E" & 1 + aantal).Value = c.Value
        
        'Formule
        If c.HasFormula Then .Range("F" & 1 + aantal).Value = "'" & c.Formula
    
    Next c
    
    .Columns(1).Resize(, 6).EntireColumn.AutoFit
    
End With

End Sub


Function FindAll(SearchRange As Range, FindWhat As Variant, _
                 Optional LookIn As XlFindLookIn = xlValues, Optional LookAt As XlLookAt = xlWhole, _
                 Optional SearchOrder As XlSearchOrder = xlByRows, _
                 Optional MatchCase As Boolean = False) As Range
    
    Dim FoundCell As Range
    Dim FoundCells As Range
    Dim LastCell As Range
    Dim FirstAddr As String
    With SearchRange
        Set LastCell = .Cells(.Cells.Count)
    End With

    Set FoundCell = SearchRange.Find(what:=FindWhat, after:=LastCell, _
                                     LookIn:=LookIn, LookAt:=LookAt, SearchOrder:=SearchOrder, MatchCase:=MatchCase)
    If Not FoundCell Is Nothing Then
        Set FoundCells = FoundCell
        FirstAddr = FoundCell.Address
        Do
            Set FoundCells = Application.Union(FoundCells, FoundCell)
            Set FoundCell = SearchRange.FindNext(after:=FoundCell)
        Loop Until (FoundCell Is Nothing) Or (FoundCell.Address = FirstAddr)
    End If

    If FoundCells Is Nothing Then
        Set FindAll = Nothing
    Else
        Set FindAll = FoundCells
    End If
End Function

De functie FindAll is van Chip Pearson.

Zie bijlage.

Printen is dan een kleintje.

Als ik het nog uitbreid tot alle sheets in het bestand, dan komt het resultaat integraal hier en op mijn site.

Wigi
 

Bijlagen

Als ik het nog uitbreid tot alle sheets in het bestand, dan komt het resultaat integraal hier en op mijn site.

Belofte maakt schuld...

Heb vandaag weinig gepost maar wel aan deze code gewerkt.

In tegenstelling tot de eerdere code voor 1 blad, kan je nu dus zoeken in het hele bestand. Je krijgt van die functie FindAll geen range terug, wel een array (matrix). Dat is het belangrijkste verschil. Reden zit o.a. in het feit dat Application.Union niet werkt op bereiken in meer dan 1 werkblad.

Er zit nog geen userform op, komt misschien later wel. Pas voorlopig dus in de code zelf aan waarop gezocht moet worden. Nu wordt er in het hele bestand gezocht naar Wigi.

Zie bijlage.

Wigi
 

Bijlagen

Laatst bewerkt:
Beste Wigi,

Dit moet je erg veel tijd gekost hebben.
Ik ben je erg dankbaar. De oplossing is perfect !! :thumb:

Groeten,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan