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

Zoek data uit sheet in Vba Userform

Status
Niet open voor verdere reacties.

mark1987vw

Gebruiker
Lid geworden
19 mei 2009
Berichten
96
Hallo,

Ik heb een Userform (OpenGeldDag) met 2 tekst vakken (TextBox2 & TextBox 3) en 1 Keuzelijst (ComboBox1).
Daarnaast heb ik een Sheet met 3 kolommen; Datum, Naam en Week.

De Keuzelijst wordt automatisch gevuld door de datums (in kolom A op Blad1 (Totaal)).

Wanneer ik de Combobox aanklik wil ik dat die automatisch de waardes uit de Sheet in de beide tekst vakken laat zien.
Dus wanneer ik de datum 12 november 2020 laat zien. Dat die dan de waardes Mark(Naam) en 46 (Week) Laat zien in respectievelijk TextBox2 en TextBox3.
Dit staat namelijk zo in de tabel.

Nu heb ik op internet een code gevonden maar deze is uiteraard net iets anders zoals ik wil maar ik krijg het niet voor elkaar zoals ik het wil.
Dus ik hoop dat 1 van jullie kan helpen.

Dit is de functie die ik heb aangemaakt en deze heb ik in een module gezet:

Code:
 Dim id As Date, i As Long, j As Integer, flag As Boolean

Sub GetData()

If IsDate(OpenGeldDag.ComboBox1.Value) Then

    flag = False
    i = 0
    id = OpenGeldDag.ComboBox1.Value

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                OpenGeldDag.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 2 To 3
            OpenGeldDag.Controls("TextBox" & j).Value = ""
        Next j
    End If

Else

'    ClearForm
End If

End Sub

En deze roep ik aan wanneer ik de ComboBox aanpas:

Code:
Private Sub ComboBox1_Change()

GetData
End Sub

De datum wordt opgeslagen als:

Code:
rng.Offset.NumberFormat = "dddd d mmmm yyyy"

Mogelijk gaat het fout hoe ik hem in de sheet zet. Maar ik kan nergens vinden hoe ik dit oplos.
 
Plaats je bestand hier.

De combobox kan gevuld worden met de gehele gegevenstabel.
Dat maakt het 'zoeken' een fluitje van een cent.
 
Plaats je bestand hier.

De combobox kan gevuld worden met de gehele gegevenstabel.
Dat maakt het 'zoeken' een fluitje van een cent.

Ik heb het bestand even wat makkelijker gemaakt en alle overbodige taken eruit gehaald.
Zoals te zien in het formulier: OpenGeldDag haalt die de relevante cellen op en zet die in de combobox. Maar hij haalt de rest van de tabel niet op.
Het heeft iets te maken met het IF statement denk ik maar ik weet niet hoe ik dit oplos.

Met het formulier invoerenGeld slaat die de informatie op in de tabel. Hier slaat die nog meer cellen op maar dat is nu even niet van belang.

In dit voorbeeld heb ik 1 combobox en 2 tekst vakken maar uiteindelijk wil ik dit wel uitbreiding naar meerdere cellen in een een rij.

Uiteindelijk moeten de gegevens die zijn opgehaald ook kunnen worden aangepast.


*UPDATE

Na heel veel proberen is het me dan toch gelukt hoe ik het wilde. Ik heb het bestand bijgevoegd voor de mensen die geïnteresseerd zijn.
 

Bijlagen

Laatst bewerkt:
Zonder code in een losse module, met een echte tabel en de suggestie van @snb kan het allemaal stukken eenvoudiger. Het weeknummer is afhankelijk van de datum. Of de datum is afhankelijk van de week en de dag. Dus erg logisch is deze opzet niet.
 

Bijlagen

Zonder code in een losse module, met een echte tabel en de suggestie van @snb kan het allemaal stukken eenvoudiger. Het weeknummer is afhankelijk van de datum. Of de datum is afhankelijk van de week en de dag. Dus erg logisch is deze opzet niet.

Bedankt VenA,
Ik ben veel bezig met Excel en Vba de laatste tijd maar ik ben nog vrij onervaren. Heb je bestand bekeken en dit kan veel makkelijk blijkt wel.
Ik ga er eens induiken bedankt in ieder geval voor de tips!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan