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

Msgbox wanneer een waarde niet te vinden is

Status
Niet open voor verdere reacties.

snitsel

Gebruiker
Lid geworden
12 feb 2008
Berichten
199
Beste

Normaal weet ik mijn waarden te vinden via vert.zoeken en dergelijke, maar nu is het precies omgekeerd.
Ik leg mijn probleem uit aan de hand van het bestand in bijlage.

De waarden in kolom A zijn waarden die altijd veranderen.
De waarden in kolom E zijn vaste waarden.
Het is de bedoeling als ik mijn macro start, dat hij zoekt achter waarden in kolom A die niet te vinden zijn in kolom E. Als de waarde dus niet te vinden is wil ik telkens een Msgbox krijgen met welke waarde(n) hij niet vindt.

In mijn vb zou ik dus 2 aparte msgboxen moeten krijgen met "bert" erin en nog een msgbox met "sarah" erin.

Hopelijk kan er mij hier iemand mij in helpen.

Mvg
Snitsel
 

Bijlagen

Howla!! Das van eerste keer helemaal wat ik zocht!
Ik ga het eender deze dagen proberen toe te passen in de rest van mijn macro en hopelijk krijg ik nog steeds het zelfde resultaat.
Alvast bedankt voor de snelle en correcte oplossing want dit had ik helemaal niet zelf in elkaar kunnen programmeren. Ik dacht dat het eenvoudiger ging zijn!

Super véél dank!

Grtz Snitsel
 
Beste

Toch nog een probleempje.
Ik heb de code een beetje aangepast qua bereik en de tabbladen waar hij moet zoeken.
Uiteindelijk heb ik nog een code die ervoor moet komen en dit heb ik nu ook toegepast, maar ik krijg natuurlijk problemen met die "Option" die na mijn code staat.
Hoe moet ik deze aanpassen zodanig dat dit 1 macro is?

Code:
Sub GebruiktGlas()

'Verander de getallen 0 naar een lege cel
    Sheets("Tarief").Range("F40:F89").Select
    Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

'Al dan niet verwijderen van lege rijen
    If WorksheetFunction.CountA([F40:F89]) > 0 Then
        [Y40:Y89].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End If
End Sub

Option Compare Text
Dim NameToPick As String
Dim NameExists As String

Sub ZoekNaam()
    Application.ScreenUpdating = False
    Dim r As Range
    For Each r In Sheets("template").Range("P13", Range("P13").End(xlDown)) 'deze range staat in tabblad 'template'
    NameToPick = r.Value
    FindName
    If NameExists = False Then
       NameNotfound

    End If
    Next
End Sub

Sub NameNotfound()
    Msg = "De beglazing" _
    + Chr$(13) + Chr$(13) + """" + NameToPick + """" + " bevindt zich niet in de werkmap."
    Style = 64
    Title = "Beglazing"
    MsgBox (Msg), Style, Title
End Sub

Sub FindName()
Dim n As Variant
    NameExists = False
    For Each n In Sheets("Tarief").Range("F40", Range("F40").End(xlDown)) 'deze range staat in werkblad 'Tarief'
        If n.Value = NameToPick Then
        NameExists = True
        Exit For
        End If
    Next n
End Sub

Mvg

Snitsel
 
Mag het ietsje simpeler ?
Dit is voldoende in het voorbeeld van HierEnNu

Code:
Sub ZoekNaam()
  On Error Resume Next
  For Each cl In Columns(1).SpecialCells(2)
    x = Columns(5).Find(cl, , xlValues, 1)
    If Err.Number > 0 Then MsgBox cl, , "Niet gevonden"
    Err.Clear
  Next
End Sub
Waar komt toch die neiging tot overbodige variabelen vandaan ?
 
Omdat ze daar in vele boekskes uitbundig gebruik van maken en er ook op hameren van Option Explicit te gebruiken zodat alles ook nog eens zeker gedeclareerd moet worden:evil:
 
@Rudi,

Omdat ze vergeten dat bij Office 97 de methode With...End With is geïntroduceerd; en de voorbeelden van MS in de hulpfunktie van de VBEditor daarop niet zijn aangepast.
Ik heb nog nooit een code vast zien lopen vanwege het niet declareren van variabelen of het zo spaarzaam mogleijk gebruik maken van variabelen. En ik heb nog nooit een steekhoudend argument gehoord om het te doen. Het enige wat je hoort is 'omdat anderen het doen' of 'omdat het hoort'.
 
Blijkbaar is niet iedereen dezelfde mening toegedaan
Quote:
Originally Posted by trucker10
Remove the Option Explicit at the beginning of the code

Why??? It's good practice o always use Option Explicit, the only time to delete it would be if it was there twice by mistake.
 
@ SNB

Uw code is bijna juist.
Het enige is nu: Ik krijg de Msgbox van welke beglazing er wel instaat en het is de bedoeling dat ik de msgboxen krijg van wat hij niet kan vinden!

Mvg Snitsel
 
@ Snitsel
Als ik de code van snb toepas in jouw voorbeeldbestand van Post#1 krijg ik toch netjes 2 Msgboxen met de naam Bert en Sarah :o
 
Hoi,

Ik had inderdaad de bereiken fout aangepast.
Nu had ik nog een vraagje. Mijn bereiken staan alle 2 op een ander werkblad. Hoe kan ik deze aanpassen in de macro?

Code:
Sub GebruiktGlas()
    On Error Resume Next
  For Each cl In Columns(2).SpecialCells(2) [COLOR="Red"]'Sheets 'template'[/COLOR]
    x = Columns(1).Find(cl, , xlValues, 1) [COLOR="red"]'Sheets 'Glas[/COLOR]
    If Err.Number > 0 Then MsgBox cl, , "Niet gevonden"
    Err.Clear
  Next
End Sub
 
Voor een Senior Member zou dit toch geen probleem mogen zijn
Code:
Sub ZoekNaam()
  On Error Resume Next
  For Each cl In Sheets("template").Columns(2).SpecialCells(2)
    x = Sheets("Glas").Columns(1).Find(cl, , xlValues, 1)
    If Err.Number > 0 Then MsgBox cl, , "Niet gevonden"
    Err.Clear
  Next
End Sub
 
@Daniël
Originally Posted by trucker10
Remove the Option Explicit at the beginning of the code

Why??? It's good practice o always use Option Explicit, the only time to delete it would be if it was there twice by mistake.
Zoals je ziet, het enige 'argument' is 'good practice'. Dat is voor mij het equivalent van geen argument.
 
Laatst bewerkt:
@ Warme bakkertje

Is inderdaad triestig dat ik het niet wist hé.
Ik had het kunnen toepassen in die andere vba code...

Uiteindelijk werkt het nu allemaal perfect.
Uiteindelijk moet ik alles nog een beetje samenvoegen en aanpassen,
maar normaal zal het OK zijn!!

Bedankt iedereen voor de info, hulp, oplossingen,...

Grtz Snits
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan