最近因为工作的原因,小女子自学Visual Studio 2019上的VB语言写了个计算器。
目的:求某个时间到某个时间之间的差
上代码:
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
If IsDate(TextBox1.Text) And IsDate(TextBox2.Text) And IsDate(TextBox3.Text) Then
If RadioButton1.Checked Then
Dim D, L, X As Date
Dim DA, DB, DC As Long
Dim RJ, RK As Double
D = TextBox1.Text
L = TextBox2.Text
X = TextBox3.Text
DA = DateDiff("m", D, L)
DB = DateDiff("m", L, X)
Label17.Text = DA Mod 12
Label20.Text = DA \ 12
DC = DB + 1
Label29.Text = DC Mod 12
Label28.Text = DC \ 12
If Label29.Text = 0 Then
RJ = 12 - 12
RK = 20 - Label28.Text
Label34.Text = RJ
Label35.Text = RK
Else
RJ = 12 - Label29.Text
RK = 20 - Label28.Text - 1
Label34.Text = RK
Label35.Text = RJ
End If
If Label34.Text <= 0 Then
Label34.Text = 0
Label35.Text = 0
End If
If RadioButton3.Checked Then
Dim RF, RG As Double
RF = 10 - Label20.Text - 1
RG = 12 - Label17.Text
Label37.Text = RF
Label38.Text = RG
If Label17.Text = 0 Then
Dim RH, RI As Double
RH = 12 - 12
RI = 10 - Label20.Text
Label37.Text = RI
Label38.Text = RH
End If
If Label37.Text < 0 Then
Dim OA As Double
OA = 0
Label37.Text = OA
Label38.Text = OA
End If
Else
Dim RL, RM As Double
RL = 5 - Label20.Text - 1
RM = 12 - Label17.Text
Label37.Text = RL
Label38.Text = RM
If Label17.Text = 0 Then
Dim RN, RO As Double
RN = 12 - 12
RO = 5 - Label20.Text
Label37.Text = RO
Label38.Text = RN
End If
If Label37.Text < 0 Then
Dim OA As Double
OA = 0
Label37.Text = OA
Label38.Text = OA
End If
End If
Else
Dim R, O, J As Date
Dim RA, RB, RC As Long
Dim RD, RE As Double
R = TextBox1.Text
O = TextBox2.Text
J = TextBox3.Text
RA = DateDiff("m", R, "2001.07")
RB = DateDiff("m", O, J)
Label17.Text = RA Mod 12
Label20.Text = RA \ 12
RC = RB + 1
Label29.Text = RC Mod 12
Label28.Text = RC \ 12
If Label29.Text = 0 Then
RD = 12 - 12
RE = 20 - Label28.Text
Label34.Text = RE
Label35.Text = RD
Else
RD = 12 - Label29.Text
RE = 20 - Label28.Text - 1
Label34.Text = RE
Label35.Text = RD
End If
If Label34.Text <= 0 Then
Label34.Text = 0
Label35.Text = 0
End If
If RadioButton3.Checked Then
Dim RF, RG As Double
RF = 10 - Label20.Text - 1
RG = 12 - Label17.Text
Label37.Text = RF
Label38.Text = RG
If Label17.Text = 0 Then
Dim RH, RI As Double
RH = 12 - 12
RI = 10 - Label20.Text
Label37.Text = RI
Label38.Text = RH
End If
If Label37.Text < 0 Then
Dim OA As Double
OA = 0
Label37.Text = OA
Label38.Text = OA
End If
Else
Dim RL, RM As Double
RL = 5 - Label20.Text - 1
RM = 12 - Label17.Text
Label37.Text = RL
Label38.Text = RM
If Label17.Text = 0 Then
Dim RN, RO As Double
RN = 12 - 12
RO = 5 - Label20.Text
Label37.Text = RO
Label38.Text = RN
End If
If Label37.Text < 0 Then
Dim OA As Double
OA = 0
Label37.Text = OA
Label38.Text = OA
End If
End If
End If
Else
If RadioButton1.Checked Then
TextBox1.Text = 0
TextBox2.Text = 2001.07
TextBox3.Text = 0
Label17.Text = 0
Label20.Text = 0
Label29.Text = 0
Label28.Text = 0
Label37.Text = 0
Label38.Text = 0
Label34.Text = 0
Label35.Text = 0
MessageBox.Show("需要时间格式是否正确。", “警告!”)
Else
TextBox1.Text = 0
TextBox2.Text = 0
TextBox3.Text = 0
Label17.Text = 0
Label20.Text = 0
Label29.Text = 0
Label28.Text = 0
Label37.Text = 0
Label38.Text = 0
Label34.Text = 0
Label35.Text = 0
MessageBox.Show("需要检查时间格式是否正确。", “警告!”)
End If
End If
End Sub
运行这个代码计算出来的结果
正确的值应该为:
视同年限 0 年 0 个月
实际年限 5 年 1 个月
补缴视同 10年 0 个月
补缴实际 14年 11个月
求大佬们帮帮小女子看看我这个是哪里出错了,我是新入行的小萌新,写的代码比较乱,也请大佬们不要嫌弃,拜托了。 因为这个我都快秃了。T.T
不知道你这个问题是否已经解决, 如果还没有解决的话: