在一个fram上有3个combobox,比如第一个是“年”,第二个是“月”,第三个是代表“日”
由于月份不同,“日”的天数也不同,我想让天数随年份,月份的变化而变化,这个我实现了,但是我在“日”的下拉表中选择一个后,对应的值没有显示出来,这是怎么回事?要用combobox的什么属性或方法?
事件处理代码如下:
Private Sub TimeComb_Click(Index As Integer)
    Dim DayNum  As Long
    
    If (Index = 0 Or Index = 1) Then
        Select Case (CInt(Me.TimeComb(1).Text))
           Case 1, 3, 5, 7, 8, 10, 12
              DayNum = 31
           Case 4, 6, 9, 11
              DayNum = 30
           Case Else
              If CInt(Me.TimeComb(0).Text) Mod 4 = 0 Then
                 If CInt(Me.TimeComb(0).Text) Mod 100 = 0 Then
                    DayNum = 28
                 End If
              Else
                    DayNum = 29
              End If
        End Select
    End If    ComboxVal = 1
    Me.TimeComb(2).Clear    For Cnt = 1 To DayNum
        Me.TimeComb(2).AddItem CStr(ComboxVal)
        ComboxVal = ComboxVal + 1
    Next
End Sub请指教!

解决方案 »

  1.   

    Private Sub Combo5_Click()
    Dim x As Integer
    Combo6.Clear
    Combo7.Clear
    For x = 1 To 12
    Combo6.AddItem x
    Next x
    End SubPrivate Sub Combo6_Click()
    Dim j, day1, k As Integer
    j = Combo6.Text
    If j = 1 Or j = 3 Or j = 5 Or j = 7 Or j = 8 Or j = 10 Or j = 12 Then
    day1 = 31
    ElseIf j = 4 Or j = 6 Or j = 9 Or j = 11 Then
    day1 = 30
    ElseIf j = 2 Then
    If (Val(Combo5.Text) Mod 4 = 0 And Val(Combo5.Text) Mod 100 > 0) Or Val(Combo5.Text) Mod 400 = 0 Then
    day1 = 28
    Else: day1 = 29
    End If
    End If
    For k = 1 To day1
    Combo7.AddItem k
    Next k
    End Sub
      

  2.   

    Private Sub Combo5_Click()
    Dim x As Integer
    Combo6.Clear
    Combo7.Clear
    For x = 1 To 12
    Combo6.AddItem x
    Next x
    End SubPrivate Sub Combo6_Click()
    Dim j, day1, k As Integer
    j = Combo6.Text
    If j = 1 Or j = 3 Or j = 5 Or j = 7 Or j = 8 Or j = 10 Or j = 12 Then
    day1 = 31
    ElseIf j = 4 Or j = 6 Or j = 9 Or j = 11 Then
    day1 = 30
    ElseIf j = 2 Then
    If (Val(Combo5.Text) Mod 4 = 0 And Val(Combo5.Text) Mod 100 > 0) Or Val(Combo5.Text) Mod 400 = 0 Then
    day1 = 28
    Else: day1 = 29
    End If
    End If
    For k = 1 To day1
    Combo7.AddItem k
    Next k
    End SubPrivate Sub Form_Load()
    For i = 2007 To 2020
    Combo5.AddItem iNext i
    End Sub
      

  3.   

    添加combobox 三个 我的代码的名字就是combo5,combo6,combo7了 年份可以自己修改下 ==========
    第一个忘了给combo5赋值了 ..
      

  4.   

    当然三个combobox的style属性都改为2 ...
      

  5.   

    不急不急...你干吗不用DTPicker控件呢?
      

  6.   

    想自己做着试试,顺便熟悉一下VB的一些基本语句,况且如果不是做日历呢?
    查了下是我代码位置的问题(我这个与style属性无多大关系,只要不是1就OK),刚才改好了
    Private Sub TimeComb_Click(Index As Integer)
        Dim DayNum  As Long
        
        If (Index = 0 Or Index = 1) Then
            Select Case (CInt(Me.TimeComb(1).Text))
               Case 1, 3, 5, 7, 8, 10, 12
                  DayNum = 31
               Case 4, 6, 9, 11
                  DayNum = 30
               Case Else
                  If CInt(Me.TimeComb(0).Text) Mod 4 = 0 Then
                     If CInt(Me.TimeComb(0).Text) Mod 100 = 0 Then
                        DayNum = 28
                     End If
                  Else
                        DayNum = 29
                  End If
            End Select
            
            Me.TimeComb(2).Clear
        
            For Cnt = 1 To DayNum
                Me.TimeComb(2).AddItem CStr(Cnt)
            Next
            
            Me.TimeComb(2).Text = "1"
                ‘每次事件触发时设置初始值1
        End If
       
    End Sub