各位高手!我学了一个月才学会了写一个小的程序:计算是不是闰年,以及是什么季节,可还是出问题,请问什么地方有问题了?
闰年计算不精确,如1900年为非闰年,却计算为闰年,季节计算错误,永远显示为"冬季"Dim a, b As SinglePrivate Sub Command1_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
Select Case a Mod 400 And a Mod 4 And a Mod 100
    Case a Mod 400 = 0
    Label5.Caption = "闰年"
    Case a Mod 4 = 0 And a Mod 100 <> 0
    Label5.Caption = "闰年"
    Case Else
    Label5.Caption = "非闰年"
    End Select
Select Case b
    Case b >= 1 And b <= 3
    Label6.Caption = "春季"
    Case b >= 4 And b <= 6
    Label6.Caption = "夏季"
    Case b >= 7 And b <= 9
    Label6.Caption = "秋季"
    Case Else
    Label6.Caption = "冬季"
    End Select
End SubPrivate Sub Command2_Click()
End
End Sub

解决方案 »

  1.   

    1.
       a Mod 4就行了
    2.
      Dim b as integer
        b = val(Trim(Text2.text))
      

  2.   

    Select Case a Mod 400 And a Mod 4 And a Mod 100
        Case a Mod 400 = 0
        Label5.Caption = "闰年"
        Case a Mod 4 = 0 And a Mod 100 <> 0
        Label5.Caption = "闰年"
        Case Else
        Label5.Caption = "非闰年"
        End Select
    只会执行case a mod 400
    写成这样。
    Select true
       Case a Mod 400 = 0
        Label5.Caption = "闰年"
       Case a Mod 4 = 0 And a Mod 100 <> 0
        Label5.Caption = "闰年"
       Case Else
        Label5.Caption = "非闰年"
     End Select以上不论你计算闰年方法对不对。
      

  3.   

    select case 一般不能那么用。
    给个例子你看一下
    Select Case Val(Text1)
    Case True: MsgBox "true"
    Case False: MsgBox "false"
    Case Else: MsgBox "other"
    End Select
    分别在Text1里输入-1,0,1,看一下结果。
    再试一下,下面的代码
    Select Case Val(Text1)
    Case 1: MsgBox "true"
    Case 0: MsgBox "false"
    Case Else: MsgBox "other"
    End Select
    不知道你明白我的意思没有.
      

  4.   

    一般用法
    select case 表达式
    case 结果1
    case 结果2
    case 结果,结果4'case 分支里也可以同时放多个结果
    case else
    end select 
    我再分析一下你的代码
    Select Case a Mod 400 And a Mod 4 And a Mod 100'表达式的结果是一个整数(0,或1)
        Case a Mod 400 = 0'当a取1900,这里的表达式为false也就是0,上面的表达式为0,所以1900年成了闰年。
        Label5.Caption = "闰年"
        Case a Mod 4 = 0 And a Mod 100 <> 0
        Label5.Caption = "闰年"
        Case Else
        Label5.Caption = "非闰年"
        End Select
    Select Case b'这里的b在1-12之间
        Case b >= 1 And b <= 3'这里表达式如果true则为-1,否则为0,则条件永远不成立
        Label6.Caption = "春季"
        Case b >= 4 And b <= 6'以下同理
        Label6.Caption = "夏季"
        Case b >= 7 And b <= 9
        Label6.Caption = "秋季"
        Case Else
        Label6.Caption = "冬季"'这个在你的这段代码里是必然。
        End Select
    End Sub
      

  5.   

    '按 hisofty(瘦马) 老大的算法改一下你的代码
    Private Sub Command1_Click()
    Dim a As Integer, b As Integer
    a = Val(Text1.Text)
    b = Val(Text2.Text)
    If (a Mod 4 = 0 And a Mod 100 <> 0) Or (a Mod 400 = 0) Then
        Label1.Caption = "闰年"
    Else
        Label1.Caption = "非闰年"
    End If
    Select Case b
    Case 1, 2, 3
      Label2.Caption = "春季"
    Case 4, 5, 6
      Label2.Caption = "夏季"
    Case 7, 8, 9
      Label2.Caption = "秋季"
    Case 10, 11, 12
      Label2.Caption = "冬季"
    Case Else
      Label2.Caption = "月份输入错误"
    End Select
    End Sub