Tạo hàm hiện text thông báo khi tới ngày trả tiền

Liên hệ QC

kak_lol

Thành viên mới
Tham gia
7/9/09
Bài viết
4
Được thích
0
Hiện em đã tham khảo 1 số bài và chỉnh sửa trong macro mà vẫn không chạy, bro nào rành giúp em với.
Trong bảng Exl cột "due on" là tới ngày mình phải tra tiền cho khách hàng, em mún thêm 1 macro với chức năng là khi mở file exl thì sẽ tự đông hiện thông báo là hôm nay sẽ phải trả tiền cho những đơn hàng nào dựa theo ngày "due on" và áp dụng cho tất cả các sheet trong file lun,

code của em chỉ là tham khảo rồi sửa lại nhưng vẫn bó tay vì ko có kiến thức lập trình
PHP:
Sub Auto_Open()
  Dim Clls As Range, StrC As String
  With Sheets("AR 08.09")
    For Each Clls In Range(.[D7], .[D7].End(xlDown))
      If Clls = Format(Date, "mm/dd/yy") Then
        StrC = .[A1] & Chr(10) & Clls.Offset(, 1) & ": " & Clls
        Application.ExecuteExcel4Macro ("ALERT(""" & StrC & """,2)")
      End If
    Next Clls
  End With
End Sub

link file của em, ko hiu sao em att trên 4rum ko dc file em có 9.4kb @@
http://www.mediafire.com/?sharekey=b97ac0bbd7113d745a3d773badf21430e04e75f6e8ebb871
 
Lần chỉnh sửa cuối:
Bạn sửa :
If
Clls = Format(Date, "mm/dd/yy") Then
Thành:
If Format(Clls,, "dd/mm")= Format(Date, "dd/mm") Then
Thân.
 
Hiện em đã tham khảo 1 số bài và chỉnh sửa trong macro mà vẫn không chạy, bro nào rành giúp em với.
Trong bảng Exl cột "due on" là tới ngày mình phải tra tiền cho khách hàng, em mún thêm 1 macro với chức năng là khi mở file exl thì sẽ tự đông hiện thông báo là hôm nay sẽ phải trả tiền cho những đơn hàng nào dựa theo ngày "due on" và áp dụng cho tất cả các sheet trong file lun,

code của em chỉ là tham khảo rồi sửa lại nhưng vẫn bó tay vì ko có kiến thức lập trình
PHP:
Sub Auto_Open()
  Dim Clls As Range, StrC As String
  With Sheets("AR 08.09")
    For Each Clls In Range(.[D7], .[D7].End(xlDown))
      If Clls = Format(Date, "mm/dd/yy") Then
        StrC = .[A1] & Chr(10) & Clls.Offset(, 1) & ": " & Clls
        Application.ExecuteExcel4Macro ("ALERT(""" & StrC & """,2)")
      End If
    Next Clls
  End With
End Sub
link file của em, ko hiu sao em att trên 4rum ko dc file em có 9.4kb @@
http://www.mediafire.com/?sharekey=b97ac0bbd7113d745a3d773badf21430e04e75f6e8ebb871
File bạn dùng tiếng Anh thì cần gì Macro 4 chứ
Mặc khác Clls thuộc dạng DATE, sao so sánh với TEXT được (Format(...) là dạng TEXT)
Vậy sửa lại thành:
PHP:
Sub Auto_Open()
  Dim Clls As Range, StrC As String
  With Sheets("AR 08.09")
    For Each Clls In Range(.[D7], .[D7].End(xlDown))
      If Clls = Date Then
        MsgBox .[A1] & Chr(10) & Clls.Offset(, 1) & ": " & Clls
      End If
    Next Clls
  End With
End Sub
Muốn code có tác dụng trên mọi sheet, bạn thêm 1 vòng lập nữa duyệt qua các sheet là xong!
 
thank hai anh thivantanndu96081631
em cũng mò ra dc ít ít , em đã chỉnh code em lại khi còn 3 ngày tới ngày trả thì sẽ hiện ra arlet, nhưng em ko bít làm sao nếu khi mình đã trả tiền nhưng còn 2 ngày mới tới ngày due on thì thông báo nó vẫn hiện khi mình đã trả rồi với lại khi hiện thông báo mình làm sao dể nó hiện ra invoce cần trả nằm bên cột tương ứng là A7. Hix nhưng cái này chủ yếu là kiến thức về lập trình cách đặt biến gọi hàm em mù tịt ,nhưng về giả pháp thì em có nhìu ý tưởng lắm nhưng ko bít phải làm sao? mong anh em nào giúp đỡ xin chĩ dẫn cụ thể về cách gọi biến hoặc hàm ví dzụ như thêm vòng lập để duyệt tất cả các sheet cách gọi hàm là em chịu, mỗi ngày em sẽ update 1 chút theo ý của em anh em nào rảnh hoặc wan tâm có thể giúp em chỉnh sửa hay góp ý cũng dc, thân.

còn đây là code mà sau khi dc chỉ dẫn, ko bít ký hiệu thể hiện "hoặc" là ký hiệu j` nữa :(

PHP:
Sub Auto_Open()
  Dim Clls As Range, StrC As String
  With Sheets("AR 08.09")
    For Each Clls In Range(.[D7], .[D7].End(xlDown))
      If Clls = (Date + 3) "hoặc" Clls = (Date + 2) "hoặc" (Date +1) & ( "J7" = null)
         Then
        MsgBox .[A1] & Chr(10) & Clls.Offset(, 1) & ": " & "A7"
      End If
    Next Clls
  End With
End Sub
+-+-+-+ Xin mấy anh giúp em những chỗ em tô đỏ là các biến mà em ko bít cách gọi, lưu ý là "A7" với "J7" là giá trị tương đương lấy từ Cell In Range ví dụ này là D7 .
 

File đính kèm

  • AR aug 18 LS.xls
    45 KB · Đọc: 34
thank hai anh thivantanndu96081631
em cũng mò ra dc ít ít , em đã chỉnh code em lại khi còn 3 ngày tới ngày trả thì sẽ hiện ra arlet, nhưng em ko bít làm sao nếu khi mình đã trả tiền nhưng còn 2 ngày mới tới ngày due on thì thông báo nó vẫn hiện khi mình đã trả rồi với lại khi hiện thông báo mình làm sao dể nó hiện ra invoce cần trả nằm bên cột tương ứng là A7. Hix nhưng cái này chủ yếu là kiến thức về lập trình cách đặt biến gọi hàm em mù tịt ,nhưng về giả pháp thì em có nhìu ý tưởng lắm nhưng ko bít phải làm sao? mong anh em nào giúp đỡ xin chĩ dẫn cụ thể về cách gọi biến hoặc hàm ví dzụ như thêm vòng lập để duyệt tất cả các sheet cách gọi hàm là em chịu, mỗi ngày em sẽ update 1 chút theo ý của em anh em nào rảnh hoặc wan tâm có thể giúp em chỉnh sửa hay góp ý cũng dc, thân.

còn đây là code mà sau khi dc chỉ dẫn, ko bít ký hiệu thể hiện "hoặc" là ký hiệu j` nữa :(

PHP:
Sub Auto_Open()
  Dim Clls As Range, StrC As String
  With Sheets("AR 08.09")
    For Each Clls In Range(.[D7], .[D7].End(xlDown))
      If Clls = (Date + 3) "hoặc" Clls = (Date + 2) "hoặc" (Date +1) & ( "J7" = null)
         Then
        MsgBox .[A1] & Chr(10) & Clls.Offset(, 1) & ": " & "A7"
      End If
    Next Clls
  End With
End Sub
+-+-+-+ Xin mấy anh giúp em những chỗ em tô đỏ là các biến mà em ko bít cách gọi, lưu ý là "A7" với "J7" là giá trị tương đương lấy từ Cell In Range ví dụ này là D7 .
Hoặc thay bằng OR
Clls = (Date + 3) "hoặc" Clls = (Date + 2) "hoặc" (Date +1)
thay bằng
Clls = Date + 3 Or Clls = Date + 2 Or Clls = Date + 1
Dấu & chắc bạn muốn nói đến toán tử AND ---> Vậy thay nó bằng chử AND
Còn cái
"J7" = null là ý bạn muốn nói cái gì vậy?
 
Lần chỉnh sửa cuối:
"J7" = null, ý em là khi mình trả tiền rồi thi` bên cột J7 tương ứng với D7(cột mà mình xét thấy phải trả tiền) mình sẽ note vô đó 1 đoạn text báo là đã trả khi xét trong vòng 3 ngày nếu thấy ô J7 có note tức là đã trả tiền rồi thì 2 ngày còn lại sẽ ko báo trả tiền nữa. Còn 1 vấn đề nữa là khi mình xét 1 Clls ví dụ là D7 thì mình gọi ô các giá trị tương ứng cùng hàng E7, F7, G7 mình gọi làm sao, giống như hàm VLOOKUP đó. Mìnhc có thể cho + giá trị các ô de? lấy giá tri O mình muốn ko ? VD
Mình Ô In Rage của mình là D7 khi mún lấy giá trị J7 thì mình gọi D7 + 5 dc ko @@ hay D10 = D7 +3, hix đây chỉ là 1y của em mọi nguoi` dừng cười em !
 
Lần chỉnh sửa cuối:
Còn 1 vấn đề nữa là khi mình xét 1 Clls ví dụ là D7 thì mình gọi ô các giá trị tương ứng cùng hàng E7, F7, G7 mình gọi làm sao
Ta dùng Offset!
Cú pháp
Offset(Dòng, Cột)
Ví dụ, từ D7 (là Clls) bạn muốn gọi các cell khác thì:
A7 = Clls.Offset(0,-3)
B7 = Clls.Offset(0,-2)
C7 = Clls.Offset(0,-1)
E7 = Clls.Offset(0,1)
F7 = Clls.Offset(0,2)
G7 = Clls.Offset(0,3)

Hoàn toàn giống với hàm Offset của công thức Excel
 
Ta dùng Offset!
Cú pháp
Offset(Dòng, Cột)
Ví dụ, từ D7 (là Clls) bạn muốn gọi các cell khác thì:
A7 = Clls.Offset(0,-3)
B7 = Clls.Offset(0,-2)
C7 = Clls.Offset(0,-1)
E7 = Clls.Offset(0,1)
F7 = Clls.Offset(0,2)
G7 = Clls.Offset(0,3)

Hoàn toàn giống với hàm Offset của công thức Excel
Bây h thì em đã hỉu :D Thank a nhìu bây mình dùng hàm nào để cho nó chạy trên tất cả các sheet đây . Anh nói là dùng vòng lập thì e--=0m ko hỉu lắm theo em nghĩ là chỉ cần thay đôi code chỗ With Sheets("AR 08.09") bằng giá tr5i tổng thể nào đó :D như là "all". Mog anh giúp lần nữa
 
Bây h thì em đã hỉu :D Thank a nhìu bây mình dùng hàm nào để cho nó chạy trên tất cả các sheet đây . Anh nói là dùng vòng lập thì e--=0m ko hỉu lắm theo em nghĩ là chỉ cần thay đôi code chỗ With Sheets("AR 08.09") bằng giá tr5i tổng thể nào đó :D như là "all". Mog anh giúp lần nữa
Thì vòng lập For đó
Đại khái vầy:
PHP:
Sub Test()
  Dim Sh As Worksheet
  For Each Sh in Thisworkbook.Worksheets
    With Sh '<---- Cái With Sheets("AR 08.09") của bạn được thay bằng cái này
    ......
    ..... Đoạn code củ
    End With
  Next Sh
End Sub
 
Web KT
Back
Top Bottom