Cài đặt để code VBA chạy theo thời gian định sẵn (1 người xem)

Liên hệ QC

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

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!
 

File đính kèm

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!
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
 
Upvote 0
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
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.

Sub hibe()
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()
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 Sub
 
Upvote 0
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ì.
Đ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:

Private Sub Worksheet_Change(ByVal Target As Range)
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 Sub

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
 
Upvote 0
Hy vọng bác hiểu được ý của mình.
 
Upvote 0
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
Nâ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
 
Lần chỉnh sửa cuối:
Upvote 0
Nâ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
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
 
Upvote 0
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
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á!
 
Upvote 0
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á!
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ảm ơn bác.
 
Upvote 0
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 - B1
 

File đính kèm

Upvote 0
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á!
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 ơn
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom