cảm ơn ba tê giúp đỡ vào đã góp ý với mình. code của bạn mình đã thử nhưng có lỗi hay sao ấy. khi mình gõ ngày 30/3/2014 (các ngày rơi vào chủ nhật ) thì code báo lỗi run-time.1004.bạn test lại thử xem nhé.
về việc đưa ý tưởng thì mình cũng mong các bạn thông cảm cho mình: lính mới nên để hình dung ra một ý tưởng đầy đủ ngay một lúc thì cũng khó, nên mình vừa làm vừa bổ sung. mình biết mỗi lần thêm 1 chút là fai viết lại code rất mất tg của các bạn.
cảm ơn tất cả mọi người đã hỗ trợ mình, chúc mọi người một ngày nghỉ cuối tuần thoải mái, vui vẻ bên gia đình và bạn bè. cảm ơn
Má ơi! Chủ nhật cũng có người xin phép nghỉ.
Đâu phải "con sâu trong bụng" mà dự trù hết các lỗi "nhập bậy" của người sử dụng đây.
[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Long, C As Long, Arr(1 To 1, 1 To 9)
Dim TenGV As String, Thu As Long, I As Long, J As Long
If Target.Column = 4 And Target.Count = 1 And Target.Row > 4 Then
If IsDate(Target) Then
If Target.Offset(, -2) = Empty Then
MsgBox "Chua co ten GV", , "GiaiPhapExcel"
Target.ClearContents
Exit Sub
End If
TenGV = UCase(Target.Offset(, -2))
Thu = Weekday(Target)
If Thu = 1 Then
MsgBox "Ngay Chu Nhat Ma oi!", , "GiaiPhapExcel"
Exit Sub
End If
Target.Offset(, -1) = Thu
R = Thu * 10 - 17
With Sheets("TKB")
C = .[IV3].End(xlToRight).Column
For I = 1 To 9
For J = 3 To C
If UCase(.Cells(R + I, J)) = TenGV Then
If .Cells(R + I, J).Interior.ColorIndex = 3 Then 'Mau do
Arr(1, I) = .Cells(3, J).Value & "*"
Else
Arr(1, I) = .Cells(3, J).Value
End If
End If
Next J
Next I
End With
Target.Offset(, 2).Resize(, 9) = Arr
Else
MsgBox "Nhap dung Ngay/Thang/Nam", , "GiaiPhapExcel"
Target.Offset(, -1).Resize(, 12).ClearContents
End If
End If
End Sub[/GPECODE]