kstruong2005
Thành viên mới
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 20/1/11
- Bài viết
- 12
- Được thích
- 0
Cảm ơn bạn đã quan tâm :
Học lực giỏi : Điểm TB>= 8.5 đồng thời không được môn nào dưới điểm 7.0; Nếu không thỏa mãn điều kiện 2 thì loại khá
Học lực khá : Điểm TB>= 6.5 đồng thời không được môn nào dưới điểm 5.5; Nếu không thỏa mãn điều kiện 2 thì loại trung bình
Học lực trung bình : Điểm TB>= 5.0 đồng thời không được môn nào dưới điểm 4. Nếu không thỏa mãn điều kiện 2 thì loại yếu
Học lực yếu : các trường hợp còn lại.
Cảm ơn bạn đã quan tâm :
Học lực giỏi : Điểm TB>= 8.5 đồng thời không được môn nào dưới điểm 7.0; Nếu không thỏa mãn điều kiện 2 thì loại khá
Học lực khá : Điểm TB>= 6.5 đồng thời không được môn nào dưới điểm 5.5; Nếu không thỏa mãn điều kiện 2 thì loại trung bình
Học lực trung bình : Điểm TB>= 5.0 đồng thời không được môn nào dưới điểm 4. Nếu không thỏa mãn điều kiện 2 thì loại yếu
Học lực yếu : các trường hợp còn lại.
Function HocLuc(DiemTB As Double, DiemMon) As String
Dim Mon, Diem
Gioi:
If DiemTB >= 8.5 Then
For Each Mon In DiemMon
If Mon < 7 Then
GoTo Kha
End If
Next
HocLuc = "Gioi"
Exit Function
End If
Kha:
If DiemTB >= 6.5 Then
For Each Mon In DiemMon
If Mon < 5.5 Then
GoTo TB:
End If
Next
HocLuc = "Kha"
Exit Function
End If
TB:
If DiemTB >= 5 Then
For Each Mon In DiemMon
If Mon < 4 Then
GoTo Yeu:
End If
Next
HocLuc = "TB"
Exit Function
End If
Yeu:
HocLuc = "Yeu"
End Function
=HocLuc(E2,B2:D2)
Code của bạn sai cấu trúc. Tôi không nghĩ là bạn viết đúng như trong sách. Bạn kiểm tra kỹ lại xem.Cảm ơn bạn huuthang_bd minh có copy code của bạn về rồi mà không chạy.
Mình đang tìm hiểu VBA trong quyển "Lập trình VBA - Tác giả Phan Tụ Hướng "
mà đến chỗ VD này không chạy được mặc dù mình đã viết Code như của tác giả
Bạn có thể Attach file đó lên được không?
Xin cảm ơn các bạn đã trả lời.
Function HocLuc(DiemTB As Double, DiemMon As Variant) As String
Dim Mon As Variant
Dim lim1 As Variant
Dim lim2 As Variant
Dim HL As Variant
lim1 = Array(8.5, 6.5, 5)[COLOR=#ff0000] ' mức hạng trung bình[/COLOR]
lim2 = Array(7, 5.5, 4)[COLOR=#ff0000] ' mức hạng từng môn[/COLOR]
HL = Array("Gioi", "Kha", "TrungBinh", "Yeu")[COLOR=#ff0000] ' chuỗi dịch hạng ra chữ[/COLOR]
Dim hang As Integer
For hang = 0 To UBound(lim1)[COLOR=#ff0000] ' tính hạng theo trung bình[/COLOR]
If DiemTB >= lim1(hang) Then Exit For
Next hang
[COLOR=#ff0000]' nếu vòng lặp không exit sớm thì hạng = Ubound(lím) + 1, tức là hạng cuối cùng[/COLOR]
If hang <= UBound(lim1) Then[COLOR=#ff0000] ' xét điều kiện xem có phải tụt hạng - hạng cuối không thể tụt[/COLOR]
For Each Mon In DiemMon
If Mon < lim2(hang) Then[COLOR=#ff0000] ' không đạt điều kiện tối thiểu -> tụt hạng[/COLOR]
hang = hang + 1
Exit For
End If
Next
End If
HocLuc = HL(hang)
End Function