TexA1,TexA2,TexA3,TexA4,TexA5是5个textbox,点击CommandButton1时,5个textbox中最大的数颜色变成&HFF&,最小的变成&HFFFF&,只能有一个最大值和最小值变颜色,最后将textbox中没有变颜色的3个值球平均数.就像比赛打分一样,去掉一个最高值,一个最低值,然后求平均数.
多谢大家帮忙
Dim sum As Single
Dim AverageScore As Single
Dim Max As Single
Dim Min As Single
Private Sub CommandButton1_Click()
If TxtA1.Value = TxtA2.Value And TxtA2.Value = TxtA3.Value And TxtA3.Value = TxtA4.Value And TxtA4.Value = TxtA5.Value Then
TxtA1.ForeColor = &HFF&
TxtA2.ForeColor = &HFFFF&
Else
If TxtA1.Value > TxtA2.Value Then Max = TxtA1.Value
Min = TxtA2.Value
If TxtA1.Value < TxtA2.Value Then Max = TxtA2.Value
Min = TxtA1.Value
If TxtA3.Value > Max Then Max = TxtA3.Value
If TxtA3.Value < Min Then Min = TxtA3.Value
If TxtA4.Value > Max Then Max = TxtA4.Value
If TxtA4.Value < Min Then Min = TxtA4.Value
If TxtA5.Value > Max Then Max = TxtA5.Value
If TxtA5.Value < Min Then Min = TxtA5.Value
If Max = TxtA1.Value Then TxtA1.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& Then If Max = TxtA2.Value Then TxtA2.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& And TxtA2.ForeColor <> &HFF& Then If Max = TxtA3.Value Then TxtA3.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& And TxtA2.ForeColor <> &HFF& And TxtA3.ForeColor <> &HFF& Then If Max = TxtA4.Value Then TxtA4.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& And TxtA2.ForeColor <> &HFF& And TxtA3.ForeColor <> &HFF& And TxtA4.ForeColor <> &HFF& Then If Max = TxtA5.Value Then TxtA5.ForeColor = &HFF&
If Min = TxtA1.Value Then TxtA1.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& Then If Min = TxtA2.Value Then TxtA2.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& And TxtA2.ForeColor <> &HFFFF& Then If Min = TxtA3.Value Then TxtA3.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& And TxtA2.ForeColor <> &HFFFF& And TxtA3.ForeColor <> &HFFFF& Then If Min = TxtA4.Value Then TxtA4.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& And TxtA2.ForeColor <> &HFFFF& And TxtA3.ForeColor <> &HFFFF& And TxtA4.ForeColor <> &HFFFF& Then If Min = TxtA5.Value Then TxtA5.ForeColor = &HFFFF&
End If
Slide5.LblTotal = ""
Slide5.LblTotal1 = ""
Slide6.TextBox1 = ""
End Sub
Private Sub CommandTotal_Click()
Dim sum As Single
If TxtA1.ForeColor = &HFF& Or TxtA1.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA1.Text)
If TxtA2.ForeColor = &HFF& Or TxtA2.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA2.Text)
If TxtA3.ForeColor = &HFF& Or TxtA3.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA3.Text)
If TxtA4.ForeColor = &HFF& Or TxtA4.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA4.Text)
If TxtA5.ForeColor = &HFF& Or TxtA5.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA5.Text)
AverageScore = Format(sum / 3, "#.##")
Slide5.LblTotal = AverageScore
End Sub
多谢大家帮忙
Dim sum As Single
Dim AverageScore As Single
Dim Max As Single
Dim Min As Single
Private Sub CommandButton1_Click()
If TxtA1.Value = TxtA2.Value And TxtA2.Value = TxtA3.Value And TxtA3.Value = TxtA4.Value And TxtA4.Value = TxtA5.Value Then
TxtA1.ForeColor = &HFF&
TxtA2.ForeColor = &HFFFF&
Else
If TxtA1.Value > TxtA2.Value Then Max = TxtA1.Value
Min = TxtA2.Value
If TxtA1.Value < TxtA2.Value Then Max = TxtA2.Value
Min = TxtA1.Value
If TxtA3.Value > Max Then Max = TxtA3.Value
If TxtA3.Value < Min Then Min = TxtA3.Value
If TxtA4.Value > Max Then Max = TxtA4.Value
If TxtA4.Value < Min Then Min = TxtA4.Value
If TxtA5.Value > Max Then Max = TxtA5.Value
If TxtA5.Value < Min Then Min = TxtA5.Value
If Max = TxtA1.Value Then TxtA1.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& Then If Max = TxtA2.Value Then TxtA2.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& And TxtA2.ForeColor <> &HFF& Then If Max = TxtA3.Value Then TxtA3.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& And TxtA2.ForeColor <> &HFF& And TxtA3.ForeColor <> &HFF& Then If Max = TxtA4.Value Then TxtA4.ForeColor = &HFF&
If TxtA1.ForeColor <> &HFF& And TxtA2.ForeColor <> &HFF& And TxtA3.ForeColor <> &HFF& And TxtA4.ForeColor <> &HFF& Then If Max = TxtA5.Value Then TxtA5.ForeColor = &HFF&
If Min = TxtA1.Value Then TxtA1.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& Then If Min = TxtA2.Value Then TxtA2.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& And TxtA2.ForeColor <> &HFFFF& Then If Min = TxtA3.Value Then TxtA3.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& And TxtA2.ForeColor <> &HFFFF& And TxtA3.ForeColor <> &HFFFF& Then If Min = TxtA4.Value Then TxtA4.ForeColor = &HFFFF&
If TxtA1.ForeColor <> &HFFFF& And TxtA2.ForeColor <> &HFFFF& And TxtA3.ForeColor <> &HFFFF& And TxtA4.ForeColor <> &HFFFF& Then If Min = TxtA5.Value Then TxtA5.ForeColor = &HFFFF&
End If
Slide5.LblTotal = ""
Slide5.LblTotal1 = ""
Slide6.TextBox1 = ""
End Sub
Private Sub CommandTotal_Click()
Dim sum As Single
If TxtA1.ForeColor = &HFF& Or TxtA1.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA1.Text)
If TxtA2.ForeColor = &HFF& Or TxtA2.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA2.Text)
If TxtA3.ForeColor = &HFF& Or TxtA3.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA3.Text)
If TxtA4.ForeColor = &HFF& Or TxtA4.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA4.Text)
If TxtA5.ForeColor = &HFF& Or TxtA5.ForeColor = &HFFFF& Then sum = sum + CSng(TxtA5.Text)
AverageScore = Format(sum / 3, "#.##")
Slide5.LblTotal = AverageScore
End Sub
另外你的
Slide5.LblTotal = ""
Slide5.LblTotal1 = ""
Slide6.TextBox1 = ""
是什么意思?
属性也不对,是VBA还是脚本?
Sum 得到的是最大数和最小数之和
Dim sum As Single
If Not (Text1.ForeColor = &HFF&) And Not (Text1.ForeColor = &HFFFF&) Then sum = sum + CSng(Text1.Text)
If Not (Text2.ForeColor = &HFF&) And Not (Text2.ForeColor = &HFFFF&) Then sum = sum + CSng(Text2.Text)
If Not (Text3.ForeColor = &HFF&) And Not (Text3.ForeColor = &HFFFF&) Then sum = sum + CSng(Text3.Text)
If Not (Text4.ForeColor = &HFF&) And Not (Text4.ForeColor = &HFFFF&) Then sum = sum + CSng(Text4.Text)
If Not (Text5.ForeColor = &HFF&) And Not (Text5.ForeColor = &HFFFF&) Then sum = sum + CSng(Text5.Text)
'AverageScore = Format(sum / 3, "#.##")
'Slide5.LblTotal = AverageScore
Text6.Text = sum
End Sub
'Slide5.LblTotal = AverageScore
Text6.Text = AverageScore
Dim MaxId As Integer '记录最大值的Id号
Dim MinId As Integer '记录最小值的Id号
Dim Sum As Currency '求和
Dim i As Integer '循环计数器
On Error GoTo ErrHandler '捕捉错误
MaxId = 0 '初始化
MinId = 0 '
Sum = 0 '
For i = 0 To TxtIn.Count - 1 '进行统计
TxtIn(i).ForeColor = vbBlack
If CCur(TxtIn(i)) < CCur(TxtIn(MinId)) Then MinId = i
If CCur(TxtIn(i)) >= CCur(TxtIn(MaxId)) Then MaxId = i
Sum = Sum + CCur(TxtIn(i))
Next i
TxtIn(MinId).ForeColor = &HFF& '设最小值为红色
TxtIn(MaxId).ForeColor = &HFFFF& '设最大值为黄色
Sum = Sum - CCur(TxtIn(MinId).Text) '去掉一个最低分
Sum = Sum - CCur(TxtIn(MaxId).Text) '去掉一个最高分
If TxtIn.Count > 2 Then TxtAvg.Text = Format(Sum / (TxtIn.Count - 2), "0.00")
'输入框必须是两个以上
Exit Sub
ErrHandler: '处理错误
If Err.Number = 13 Then '只对付输入非数字时引起的转换错误
MsgBox "输入错误", vbCritical, "错误"
TxtIn(i).SetFocus '引起错误的输入框置焦点,并选定里面的文字
TxtIn(i).SelStart = 0 '
TxtIn(i).SelLength = Len(TxtIn(i)) '
Else
MsgBox "Error " & Err.Number & ":" & Err.Description
End If
End Sub
Private Sub Command1_Click()
Dim sum As Single
Dim Aver As Single
Dim Max As Single
Dim Min As Single
Dim indexmax As Integer
Dim indexmin As Integer
Max = Val(Text1(0).Text)
Min = Max
sum = Val(Text1(0).Text)
For i = 1 To 4
If Val(Text1(i).Text) > Max Then
Max = Val(Text1(i).Text)
indexmax = i
End If
If Val(Text1(i).Text) < Min Then
Min = Val(Text1(i).Text)
indexmin = i
End If
sum = sum + Val(Text1(i).Text)
Next i
Text1(indexmax).ForeColor = &HFF&
Text1(indexmin).ForeColor = &HFFFF&
If Max = Min Then Text1(1).ForeColor = &HFF&
Aver = (sum - Max - Min) / 3
Text2.Text = Format(Str(Aver), "#.##")
End Sub
至于输入环节的控制这里就省略了.