nguyendinhtutw
Thành viên chính thức


- Tham gia
- 17/4/17
- Bài viết
- 73
- Được thích
- 3
- Giới tính
- Nam
Mình có 1 file như đính kèm, mình muốn code VBA chỉ chạy trong khoảng thời gian từ A1:B1, ngoài khoảng thời gian đó thì code VBA đó không chạy. Có cách nào không các bác?
Mình cảm ơn!
Sub hibe() 'Sub này để gọi sub chính (làm công việc gì đó) khi thỏa điều kiện ngày ở A1-B1
Dim startDate As Long, endDate As Long
startDate = CLng(Sheet1.Range("A1").Value)
endDate = CLng(Sheet1.Range("B1").Value)
If startDate <= Date And Date <= endDate Then
Call YourCode
End If
End Sub
'===============================
Sub YourCode() 'Đây là sub chính thực hiện công việc gì đó
MsgBox "Dây là code cua ban."
End Sub
Cảm ơn befaint, mình có áp dụng cách của bác, nhưng code không chạy, bác chỉ giúp xem sai chỗ nào. Xin lỗi bác do mình còn gà VBA.PHP:Sub hibe() 'Sub này để gọi sub chính (làm công việc gì đó) khi thỏa điều kiện ngày ở A1-B1 Dim startDate As Long, endDate As Long startDate = CLng(Sheet1.Range("A1").Value) endDate = CLng(Sheet1.Range("B1").Value) If startDate <= Date And Date <= endDate Then Call YourCode End If End Sub '=============================== Sub YourCode() 'Đây là sub chính thực hiện công việc gì đó MsgBox "Dây là code cua ban." End Sub
Đoạn code chính mà mình muốn chạy là code dưới đây, mục đích của code này là highlight màu đỏ và insert comment vào những cell bị người khác chỉnh sửa:Sai ở chỗ nào thì khi chạy code, vba có chức năng Debug rồi, bôi vàng dòng nào thì lỗi từ dòng đó.
Target.Interior.Color = RGB(255, 0, 0)
Không xác định được Target là cái gì.
Nâng cao thì mình chịu, không biết đâu!!!Bây giờ mình muốn nâng cao hơn một chút, là code này muốn chạy thì phải thỏa mãn điều kiện là hành động chỉnh sửa cell được thực hiện trong khoảng thời gian A1 - B1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim startDate As Long, endDate As Long
startDate = CLng(Sheet1.Range("A1").Value)
endDate = CLng(Sheet1.Range("B1").Value)
If startDate <= Date And Date <= endDate Then
'Phần code của chủ thớt:
'
Target.Interior.Color = RGB(255, 0, 0)
Target.Font.Color = RGB(255, 255, 255)
If HighlightedCells = "" Then
HighlightedCells = Target.Address
Else
HighlightedCells = HighlightedCells & "," & Target.Address
End If
Dim OldComment As String, NewComment As String, objCell As Range
If Target.Cells.Count > 1 Then Exit Sub
NewComment = "Changed on " & Now() & " by " & Application.UserName
If Target.Comment Is Nothing Then
Target.AddComment NewComment
Else
OldComment = Target.Comment.Text
Target.Comment.Text NewComment & vbLf & OldComment
End If
End If
End Sub
Dù sao cũng cảm ơn bác đã dành thời gian đọc threat của mìnhNâng cao thì mình chịu, không biết đâu!!!
Giả sử mình để A1 là ngày 18/06/2017, B1 là 30/06/2017Nâng cao thì mình chịu, không biết đâu!!!
-------------
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim startDate As Long, endDate As Long startDate = CLng(Sheet1.Range("A1").Value) endDate = CLng(Sheet1.Range("B1").Value) If startDate <= Date And Date <= endDate Then 'Phần code của chủ thớt: ' Target.Interior.Color = RGB(255, 0, 0) Target.Font.Color = RGB(255, 255, 255) If HighlightedCells = "" Then HighlightedCells = Target.Address Else HighlightedCells = HighlightedCells & "," & Target.Address End If Dim OldComment As String, NewComment As String, objCell As Range If Target.Cells.Count > 1 Then Exit Sub NewComment = "Changed on " & Now() & " by " & Application.UserName If Target.Comment Is Nothing Then Target.AddComment NewComment Else OldComment = Target.Comment.Text Target.Comment.Text NewComment & vbLf & OldComment End If End If End Sub
Cách: Đánh dấu vào chỗ nào để biết E10 chỉnh sửa ngày 19/6/2017. Giả sử ghi vào F10 = 19/6/2017.Giả sử mình để A1 là ngày 18/06/2017, B1 là 30/06/2017
1. Hôm nay ngày 19/6/2017 mình chỉnh sửa dữ liệu ô E10 nên ô đó sẽ bị highlight màu đỏ và bị insert comment.
2. Sang ngày mai 20/06/2017, mình sửa ô A1 thành ngày 20/06/2017 sau đó lưu và tắt file
Vậy có cách nào để khi mở file lại, ô E10 không bị highlight và comment ở ô đó bị delete (tức là code chính không còn tác dụng nữa??) - do ô này bị chỉnh sửa ngày 19/06/2017, trong khi A1 - B1 bây giờ là 20/06 - 30/06.
Cảm ơn befaint
Sub XoaCaiCu()
'Tìm trong vùng dữ liệu ở cột E:F, nếu thấy ô F(i) < A1 thì hủy tô màu nền và xóa comment tại ô E(i)
End Sub
Cảm ơn befaint đã dành thời gian đọc và trợ giúp mình. Vì mình còn gà khoản VBA nên hỏi hơi nhiều, mong bác thông cảm nếu điều này gây ra phiền toái cho bác ^^ và nếu có thể, bác giúp mình đoạn code ở trên được không, mong nhận được sự giúp đỡ của bác để mình hoàn thiện hơn.Cách: Đánh dấu vào chỗ nào để biết E10 chỉnh sửa ngày 19/6/2017. Giả sử ghi vào F10 = 19/6/2017.
Tạo một sub:
--------------------PHP:Sub XoaCaiCu() 'Tìm trong vùng dữ liệu ở cột E:F, nếu thấy ô F(i) < A1 thì hủy tô màu nền và xóa comment tại ô E(i) End Sub
Thớt này chấm dứt từ bài #9 rồi nhá!
File đính kèm dưới đây của mình đã áp dụng các code mà bác chỉ dẫn, bây giờ chỉ còn một việc nữa là làm sao xóa highlight và delete comment ở những cell khi không thỏa mãn điều kiện A1 - B1Cách: Đánh dấu vào chỗ nào để biết E10 chỉnh sửa ngày 19/6/2017. Giả sử ghi vào F10 = 19/6/2017.
Tạo một sub:
--------------------PHP:Sub XoaCaiCu() 'Tìm trong vùng dữ liệu ở cột E:F, nếu thấy ô F(i) < A1 thì hủy tô màu nền và xóa comment tại ô E(i) End Sub
Thớt này chấm dứt từ bài #9 rồi nhá!
Trong file đính kèm dưới đây mình đã tìm hiểu được code để khi chỉnh sửa dữ liệu ở cell nào đó, thì ngày chỉnh sửa dữ liệu được thể hiện ở cột BQ. Trong bảng này, start date và end date mình để ở cell BR1 và BS1. Mong nhận được sự trợ giúp của bác befaint và các bác trong GPE. Mình cảm ơnCách: Đánh dấu vào chỗ nào để biết E10 chỉnh sửa ngày 19/6/2017. Giả sử ghi vào F10 = 19/6/2017.
Tạo một sub:
--------------------PHP:Sub XoaCaiCu() 'Tìm trong vùng dữ liệu ở cột E:F, nếu thấy ô F(i) < A1 thì hủy tô màu nền và xóa comment tại ô E(i) End Sub
Thớt này chấm dứt từ bài #9 rồi nhá!