Datum (TextBox1) afhankelijk van jaar(ComboBox1) en week (ComboBox2)

Status
Niet open voor verdere reacties.

EJProsman

Gebruiker
Lid geworden
15 mrt 2011
Berichten
43
Beste Excelexperts,

Ik heb weer een vraag waar ik niet uit kom. Ik ben bezig met een formulier waarmee een database ingevuld kan worden. Dit gebeurd per week. In ComboBox1 kun je het jaar invullen en in ComboBox 2 kun je de week kiezen (nummer). Dit gaat allemaal goed, maar nu moet er in TextBox1 de begindatum van de week komen die hoort bij het jaar en het weeknummer. De begindatums met bijbehorende weeknummers zijn te vinden in Blad2. Voor de begindatums heb ik per jaar verschillende lijsten gemaakt.

Weten jullie hoe ik TextBox2 gevuld kan krijgen met de juiste datum?

In de bijlage staat een versimpeld voorbeeldbestandje;)

Alvast bedankt,
 

Bijlagen

Beste EJProsman,

Je kunt natuurlijk een functie schrijven die de week voor je berekent, maar je moet natuurlijk rekening houden met de eerste dag van de week, welke week is week 1, etc.

Als je al een lijst hebt met weeknummers en datum, dan kun je natuurlijk gewoon een zoekfunctie maken. dat heb ik ook gedaan.

Plak deze code erbij in je userform, en kijk wat er gebeurt.

Code:
Private Sub ComboBox1_Change()
    DatumInvullen
End Sub

Private Sub ComboBox2_Change()
    DatumInvullen
End Sub

Private Sub DatumInvullen()
Dim rLookup As Range
Dim nRow As Long
Dim nCol As Long

    If DataPresent Then
        
        With Sheets("Blad2")
            'zoekgebied:
            Set rLookup = .Range("b1", .Cells.SpecialCells(xlCellTypeLastCell))
            On Error GoTo Unknown:    'er treedt een fout op als er geen _
                                        waarden worden gevonden
            '   rij zoeken:
            nRow = rLookup.Columns(1).Find(ComboBox2.Value, _
                                            Lookat:=xlWhole, _
                                            LookIn:=xlValues, _
                                            MatchCase:=False).Row
            '   kolom zoeken:
            nCol = rLookup.Rows(1).Find("BeginDatum" & ComboBox1.Value, _
                                            Lookat:=xlWhole, _
                                            LookIn:=xlValues, _
                                            MatchCase:=False).Column - 1
            TextBox1.Text = WorksheetFunction.Index(rLookup, nRow, nCol)
            
        End With
        
    End If

Exit Sub
Unknown:  'fout: lege textbox
TextBox1.Text = ""
End Sub
Private Function DataPresent() As Boolean
    DataPresent = ComboBox1.Value <> Empty And _
                    ComboBox2.Value <> Empty
End Function
 
Deze misschien
Code:
Private Sub ComboBox1_Change()
    DatumInvullen
End Sub

Private Sub ComboBox2_Change()
    DatumInvullen
End Sub

Private Sub DatumInvullen()
    If DataPresent Then
        TextBox1.Text = WeekdagEerste(ComboBox1.Value, ComboBox2.Value)
    End If
End Sub
Private Function DataPresent() As Boolean
    DataPresent = ComboBox1.Value <> Empty And _
                    ComboBox2.Value <> Empty
End Function
Private Function WeekdagEerste(Jaar As Integer, Week As Integer)
    Dim X As Integer, Y As Integer
    Y = Weekday(DateSerial(Jaar, 1, 1))
    If Y > 5 Then X = 7
    WeekdagEerste = DateSerial(Jaar, 1, 1) - 5 + X + 7 * Week - Y
End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan