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

Waarde vergelijken van een Textbox en Cellen op diverse tabbladen

Status
Niet open voor verdere reacties.

AdOAdO

Gebruiker
Lid geworden
5 dec 2015
Berichten
64
Hallo,
Ik ben op zoek naar een vba die mijn "textbox1" waarde in Userform vergelijkt met waardes in een tabblad, de naam van de tabblad waar in gezocht moet worden bevindt zich in cel "D22" en de gegevens bevinden zich in kolom B:B van de tabblad. Komt de waarde overeen van "textbox1" met kolom B:B dan moet hij een msgbox weergegeven worden.

In cel "D22" kan ik verschillende tabblad namen handmatig invoeren.

De tabbladen die in cel "D22" ingevoerd worden zijn wel verborgen!

Ik heb overal gezocht maar kan niks vinden dat ik er iets van kan maken dat het werkt.
 
Begin eens om (een voorbeeld van) het bestand te plaatsen
 
En formuleer vooral wat je wil bereiken, want jouw aanpak lijkt nogal onnodig omslachtig.
 
Ik wil zien of de waardes die ik invoer in de verborgen tabbladen voorkomt.

ik heb een voorbeeld bestand toegevoegd.
 

Bijlagen

Gebruik deze achter je CommandButton1
Er wordt gelijk in alle sheets gezocht voor een match, behalve in blad1 (van waar je zoekt).

Code:
Private Sub CommandButton1_Click()
For Each sh In ThisWorkbook.Sheets
    If IsNumeric(Application.Match(Val(TextBox1), sh.Range("B:B"), 0)) And sh.Name <> "Blad1" Then c00 = c00 & IIf(c00 = "", "", ",") & sh.Name
Next
 MsgBox "Waarde komt voor in sheets: " & IIf(c00 = "", "Geen!", c00)
 Unload Me
End Sub
 
Laatst bewerkt:
Bedankt voor u reactie.

Dit is niet wat ik zoek. Ik wil specifiek in een blad zoeken daarom dat in cel D22 de naam van tabblad ingevuld wordt.

Hij moet kijken in D22 wat voor tabblad het is en daarna vergelijken.

En het zijn niet alleen getallen maar ook letter en of combinatie die voorkomen in B:B.
 
Code:
Private Sub CommandButton1_Click()
   Caption = ""
   For Each it In Sheets
     If it.Visible * Not it.Columns(2).Find(TextBox1, , , 1) Is Nothing Then Caption = Caption & "_" & it.Name
   Next
End Sub
 
Gaat vast helemaal goed zo of de uitleg deugt niet. Een voorbeeldbestand is iets anders dan een kladblok.
 

Bijlagen

Het gaat niet goed.
Het is veel dan mijn vraag is.

Houd het aub simpel.
 
Het gaat niet goed.
Dit is niet wat ik zoek.

Maakt het allemaal lekker duidelijk. Wat gaat er niet goed en over welke code heb je het? Als je iets simpel wil houden dan werk je niet met verborgen bladen maar zet je de gegevens in 1 tabel en gebruik je <Ctrl> + f om te zoeken.
 
Ik denk dat ik het niet kan uitleggen.

Het zal mooi zijn als iemand over de schouder in mijn originele bestand mee kan kijken :d:confused:

Wat ik wil is:

1. Als de naam van het blad in D22 staat dat hij in dat blad kolom B:B vergelijkt met Textbox1
2. Indien er een macht is dan moet hij een foutmelding geven en anders verder doorgaan met de rest van de vba.
3. Als er niks is ingevuld in D22 dan hoeft hij nergens naar te kijken/zoeken wel doorgaan met de rest van de vba
4. Als er een naam in D22 staat wat niet voorkomt dan hoef hij ook niks te zoeken wel doorgaan met rest van de vba.

Ik hoop nu iets duidelijker te zijn.
 
Plaats dan een voorbeeldbestand en niet 1 of ander kladblok.
 
dat is toch wat de oplossing in#11 doet. maar je zal wel zelf de msgbox moeten veranderen door uw code.
 
@emields bedankt!

Hebbes het werkt nu.

Alleen werkt het niet als in D22 een waarde staat dat niet als tabblad voorkomt.

Wat moet ik er aan toevoegen dat het dan ook werkt?
 
Laatst bewerkt:
Dan weet je meteen dat je naar iets zoekt wat niet bestaat.
 
Wat een suggestie is voor een validatieregel.
 
Code:
Dim wkSht As Worksheet
For Each wkSht In Sheets
If Sheets("Basis").Range("d22").Value = wkSht.Name And Sheets("Basis").Range("d22").Value <> "" Then
    With Sheets(Sheets("Basis").Range("d22").Value)
     Set x = .Columns(2).Find(tb_MMW_nr_vrije_invoer, , , 1)
     If Not x Is Nothing Then
       MsgBox "test" & vbNewLine _
       & "testtest."
    
      Else

Dit is wat ik nu gemaakt heb alleen krijg ik een foutmelding: End if zonder blok if

Wat moet ik aanpassen?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan