Sửa code Báo Cáo Từ Ngày Đến Ngày (2 người xem)

  • Thread starter Thread starter quykh
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

quykh

Chim non
Tham gia
7/9/11
Bài viết
381
Được thích
46
Giới tính
Nữ
Nghề nghiệp
Công Nhân
Em có đoạn code này:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D1:D2]) Is Nothing Then
If Target.Rows.Count = 1 Then
If [D2] >= [D1] Then
DMQ
Else
MsgBox "Tu ngay den ngay khong hop le." & Chr(10) & "Den Ngay phai lon hon Tu Ngay" & Chr(10) & " Vui Long Nhap lai", , "Sai Roi!!!."
[D2].Select
End If
End If
End If
End Sub
Là Báo Cáo Từ Ngày là(Cell:D1) Đến Ngày là(Cell:D2).Bây giờ, em chỉnh lại cho đẹp, thì Từ ngày là(Cell:D1) Đến ngày là(Cell:F1). Mong các AC chỉnh lại code dùm em.
 
Em thay như vầy, code không chạy, mong các AC xem dùm:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D1], [F1]) Is Nothing Then
If Target.[D1:F1] = "" Then
If [F1] >= [D1] Then
DMQ
Else
MsgBox "Tu ngay den ngay khong hop le." & Chr(10) & "Den Ngay phai lon hon Tu Ngay" & Chr(10) & " Vui Long Nhap lai", , "Sai Roi!!!."
[F1].Select
End If
End If
End If
End Sub
 
Upvote 0
Em thay như vầy, code không chạy, mong các AC xem dùm:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D1], [F1]) Is Nothing Then
If Target.[D1:F1] = "" Then
If [F1] >= [D1] Then
DMQ
Else
MsgBox "Tu ngay den ngay khong hop le." & Chr(10) & "Den Ngay phai lon hon Tu Ngay" & Chr(10) & " Vui Long Nhap lai", , "Sai Roi!!!."
[F1].Select
End If
End If
End If
End Sub
Của bạn: If Not Intersect(Target, [D1], [F1]) Is Nothing Then
Sửa lại:
If Not Intersect(Target, [D1:F1]) Is Nothing Then
 
Upvote 0
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D1][COLOR=#ff0000], [F1][/COLOR]) Is Nothing Then
   If [COLOR=#ff0000]Target.Count = 1[/COLOR] Then
      If [COLOR=#ff0000][F1][/COLOR] >= [D1] Then
           DMQ
      Else
          MsgBox "Tu ngay den ngay khong hop le." & Chr(10) &  "Den Ngay phai lon hon Tu Ngay" & Chr(10) &  _
          " Vui long  nhap  lai", , "Sai roi!!!."
          [COLOR=#ff0000] [F1][/COLOR].Select
      End If
   End If
End If
End Sub

Của bạn: If Not Intersect(Target, [D1], [F1]) Is Nothing Then
Sửa lại:
If Not Intersect(Target, [D1:F1]) Is Nothing Then

Của người ta đúng rồi, chỉ lại cho sai.
 
Lần chỉnh sửa cuối:
Upvote 0
Như bài #2 em đã viết, em sửa như vậy, code vẫn không chạy. mong mọi người giúp đỡ!!!!
 
Upvote 0
Upvote 0
Code bài #4 vẫn không chạy Thầy ơi, Em nghi ngờ lỗi chổ : If Target.count = 1 , phải không Thầy ????
 
Upvote 0
Em đưa file đính kèm giả định, mong AC xem giúp.
 

File đính kèm

Upvote 0
Xin lỗi Thầy, nếu theo như file đính kèm thì phải là D2 và F2, em đã thử. Code vẫn không chạy.
 
Upvote 0
Xin lỗi Thầy, nếu theo như file đính kèm thì phải là D2 và F2, em đã thử. Code vẫn không chạy.

Xin lỗi, tôi viết thiếu. Bạn sửa lại:
Mã:
If Not Intersect(Target, [COLOR=#ff0000]Union([/COLOR][D2], [F2])[COLOR=#ff0000])[/COLOR] Is Nothing Then
 
Upvote 0
Thầy cho em hỏi, dòng If Taget.Count = 1 có nghĩa là gì?? Code của Thầy đã chạy, nhưng chạy 2 lần( gỏ ngày vào D2 code chạy , gỏ ngày vào F2 code lại chạy lần nữa.) Em chỉ muốn code chạy 1 lần khi gỏ ngày vào F2. Mong Thầy giúp đỡ!!!
 
Upvote 0
1. Target.Count = 1 tức là chỉ khi có sự thay đổi trên 1 ô, code mới chạy. Nếu tô khối F2:F4 và nhấn nút xóa chẳng hạn, thì code không chạy. Đây là cách dự phòng trường hợp người dùng tô khối và thay đổi dữ liệu hàng loạt. Có thể trong trường hợp này là dư, nhưng tôi viết theo code bài 1.

2. Code bài 1 cũng chạy 2 lần: sửa D1 cũng chạy và sửa D2 cũng chạy. Tôi làm theo bài 1. Hơn nữa, bạn có chắc là không bao giờ bạn xem báo cáo dạng giữ nguyên "đến ngày" chỉ sửa "từ ngày"?

Thí dụ đang xem từ ngày 01/12/2014 đến ngày 31/12/2014 (tháng 12), bạn không bao giờ nổi hứng xem cả năm (từ ngày 01/01/2014 đến ngày 31/12/2014), hoặc xem quý 4?
 
Upvote 0
Xin lỗi Thầy, em không để ý code của bài #1 cũng chạy 2 lần. Đúng là em muốn xem tất cả các mốc thời gian, nhưng mốc chuẩn là cell F2(Đến Ngày) Vì nếu Đến ngày(Cell F2) mà nhỏ hơn Từ Ngày(Cell D2) thì sẽ có MgsBox báo liền. Vậy Mong Thầy chỉ giáo cách chạy code chỉ khi gỏ ngày vào F2.
 
Upvote 0
Sửa lại:

If Not Intersect(Target, [F2]) Is Nothing Then
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom