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

Opgelost Zoeken en vervangen

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

malawi

Gebruiker
Lid geworden
10 mrt 2009
Berichten
169
Hallo, hoe krijg ik in VBA dezelfde pop-up als wanneer ik de sneltoetscombinatie gebruik "Ctrl F"

Ik gebruik nu onderstaande code, waar ik niet alle variabelen heb.

Code:
Sub Zoeken_vervangen()
    Dim ws As Worksheet
    Dim ps As String
    ps = "ww" ' Wachtwoord voor beveiliging
    
    ' Het blad ontgrendelen
    ActiveSheet.Unprotect Password:=ps
    
    ' Voer hier je zoekactie uit
    Application.Dialogs(xlDialogFormulaFind).Show
    
    ' Het blad opnieuw beveiligen
    ActiveSheet.Protect Password:=ps

End Sub
 
zo.

Code:
Sub FandR()
Application.CommandBars("Edit").Controls("Replace...").Execute
End Sub
 
Of:
Code:
Sub ZoekEnVervang()
    Application.SendKeys ("^h")
End Sub
 
Als bijlage heb ik een test bestand toegevoegd. Ik krijg nu de juiste pop-up. Maar ik kan de foutwaarde "#WAARDE!" niet zoeken/vinden in het zoeken met waardes, omdat tijdens het zoeken de beveiliging niet van het blad is. Na het sluiten van de pop-up met "x" of "sluiten" moet ten alle tijde de bladbeveiliging waar aan zijn met wachtwoord "ww" Wat gaat er niet goed/wat zou ik moeten aanpassen?

Het mag ook een zoekfunctie onder een knop zijn waar ik direct de fout "#WAARDE!" zoek

Bij voorbaat dank,
 

Bijlagen

Vervang de formule door dit:
Code:
=ALS.FOUT(SOM(G19*H19);"")
 
Dit is mij duidelijk, maar niet mijn opzet. In het originele document kunnen meerdere foutwaardes ontstaan door het blad heen in en bepaalde kolom. Deze wil ik 1 voor 1 opzoeken en daarnaar toe springen en daarna oplossen door andere functies. Ik zou de VBA code moeten aanpassen zodat de beveiliging van het blad wordt gehaald voor het zoekvenster en na sluiten het blad weer beveiligen. Hier kom ik niet verder mee.
 
Probeer deze eens:
Code:
Sub Zoeken_vervangen()
    ActiveSheet.Unprotect "ww"
    For Each cl In ActiveSheet.UsedRange
        If IsError(cl.Value) Then
            cl.Activate
            waarde = Application.InputBox("Geef een nieuwe waarde voor " & cl.Address & ":")
            If waarde <> "" Then cl.Value = waarde
        End If
    Next cl
    On Error GoTo 0
    ActiveSheet.Protect "ww"
End Sub
 
Laatst bewerkt:
Dit gaat ook helaas niet op. Omdat de foutwaarde ontstaan op andere locaties. Ik wil alleen maar de foutwaardes op te zoeken. Maar de beveiliging speelt dwars. deze moet er eerst af en na het zoeken er weer op.
 
Heb je het wel getest?
Het werkt prima in je voorbeeld document.
 
Zekers, in het origineel wijzigt het mijn cel met de foutwaarde maar dat is niet de bedoeling. Ik wil graag alleen maar zoeken.
 
Je wilt dus alleen een lijstje van de de cel adressen waar #WAARDE! in staat?
Of wil je dat per cel?
 
Mijn blad is beveiligd. Voor ik het zoekvenster start, moet het blad worden ontgrendeld, Dan het zoekvenster waar ik kan zoeken naar de foutwaarde. wanneer ik het zoekvenster afsluit met "x" of sluiten met het blad weer worden beveiligd. In deze volgorde. ik heb nu onderstaande VBA code maar de beveiliging blijft op het werkblad zodat ik niet kan zoeken. De waarde "#Waarde!" ontstaat ergens in een formule. hoe kan ik dit wel realiseren?

Code:
Sub UitvoerenVolgorde()
    Werkblad_ontgrendelen
    Zoeken_vervangen_U
    Werkblad_beveiligen
End Sub

Sub Werkblad_ontgrendelen()
    Dim ws As Worksheet
    Dim ps As String
    ps = "ww" ' Wachtwoord voor beveiliging
    
    ' Het blad ontgrendelen
    ActiveSheet.Unprotect password:=ps
End Sub

Sub Zoeken_vervangen_U()
    Dim ws As Worksheet
    Dim ps As String
    
    ' Zoek de tekst "#WAARDE!" in het bereik "A:D"
    Dim zoekwaarde As String
    zoekwaarde = "#WAARDE!"
    
    On Error Resume Next
    Dim gevondenCel As Range
    Set gevondenCel = Range("A:D").Find(What:=zoekwaarde, LookIn:=xlValues)
    
    If Not gevondenCel Is Nothing Then
        ' Voer de zoekactie uit
        gevondenCel.Select
    Else
        MsgBox "De tekst ""#WAARDE!"" is niet gevonden in het opgegeven bereik."
    End If
End Sub

Sub Werkblad_beveiligen()
    Dim ws As Worksheet
    Dim ps As String
    ps = "ww" ' Wachtwoord voor beveiliging
    
    ' Het blad opnieuw beveiligen
    ActiveSheet.Protect password:=ps
End Sub
 
Maar wat wil je doen met de gevonden cel?
Verder doet mijn voorbeeld in #7 precies wat je vraagt.
 
Laatst bewerkt:
Wanneer ik de foutmelding vind kan ik de voorwaardes in de formule aanpassen zodat de foutmelding wordt opgelost. Dit zijn gegevens vanuit een ander blad.
 
Dus je wilt van een gevonden cel de formule zien en deze wijzigen?
 
Nee, hij wil dat u de cel zoekt waar de foute formule instaat en die dan repareert.
 
Dat zou een mooie functie zijn ;)
Net als dat sommige gebruikers denken dat On Error Resume Next op magische wijze de error verhelpt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan