打个比方,在DTPICKER里我输入了2002-10-10,在COMBO里动态显示出从2002-10-10开始的十个工作日的日期。

解决方案 »

  1.   

    不知道合不合要求Private Sub DTPicker1_Change()
       Dim i As Long
       Dim o_Date As Date
       o_Date = Me.DTPicker1.Value
       With Me.Combo1
          .Clear
          For i = 0 To 9
             If Weekday(o_Date) = 5 Then o_Date = DateAdd("d", 2, o_Date)
             'If Weekday(o_Date) = 6 Then o_Date = DateAdd("dd", 1, o_Date)
             .AddItem Format(o_Date, "yyyy-mm-dd")
              o_Date = DateAdd("d", 1, o_Date)
          Next i
       End With
    End Sub
      

  2.   

    错了。Private Sub DTPicker1_Change()
       Dim i As Long
       Dim o_Date As Date
       o_Date = Me.DTPicker1.Value
       ' 1 = 星期天
       If Weekday(o_Date) = 1 Then o_Date = DateAdd("dd", 1, o_Date)
       With Me.Combo1
          .Clear
          For i = 0 To 9
             ' 7 = 星期六
             If Weekday(o_Date) = 7 Then o_Date = DateAdd("d", 2, o_Date)
             .AddItem Format(o_Date, "yyyy-mm-dd")
              o_Date = DateAdd("d", 1, o_Date)
          Next i
       End With
    End Sub
      

  3.   

    哈哈
    看看这个算法:
    Private Sub DTPicker1_Change()
        Dim ss As Date
        Dim da As Date
        Dim i As Integer
        Dim j As Integer
        Dim Toldate As Integer'需要显示的天数
        
        Toldate = 10 '设定显示10天
        da = DTPicker1.Value
        i = DatePart("w", da, vbMonday)'从周一算
        MsgBox i
        Do Until i >= 6 Or Combo1.ListCount = Toldate
            da = da + 1
            Combo1.AddItem da
            i = i + 1
        Loop
        da = da + (8 - i)
        ss = da
        Do Until Combo1.ListCount = Toldate
            For i = 0 To 4
                Combo1.AddItem ss
                ss = ss + 1
                If Combo1.ListCount = Toldate Then Exit For
            Next i
            ss = ss + 2
        Loop
    End Sub