Mình thấy trong form bạn chưa triển khai gì, nếu chỉ cảnh báo thôi thì có thể dùng Data Validation cũng được.Em có bài muốn hỏi các anh chị mong các anh chị giúp em với
Chi tiết em có gửi kèm theo File
Thử code sau nhé:Không đây chỉ là ví dụ thôi. Cái em cần là code để áp dụng vào file khác anh ạ
anh giúp em nhé
Private Sub Worksheet_Change(ByVal Target As Range)
If IsError([c6]) = True Then UserForm1.Show
End Sub
anh ơi cái Code trên nếu ghép vào Code này thì làm như thế nào. Em loay hoay mãi mà không được:Thử code sau nhé:
Mã:Private Sub Worksheet_Change(ByVal Target As Range) If IsError([c6]) = True Then UserForm1.Show End Sub
Theo tôi hiểu thì bạn muốn hiện thông báo khi không tìm thấy dữ liệuanh ơi cái Code trên nếu ghép vào Code này thì làm như thế nào. Em loay hoay mãi mà không được:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A32:A36,F32:F36]) Is Nothing Then Exit Sub
On Error Resume Next
Dim i As Long
With Sheet5 'The Kho'
i = WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0)
If Cells(Target.Row, 6).Value > .Cells(i, 11).Value Then
MsgBoxUni UNC("HiÖn t¹i trong kho cßn l¹i ") & .Cells(i, 11) & " " & .Cells(i, 4), 48, "Thông báo"
Cells(Target.Row, 6) = .Cells(i, 11)
End If
End With
End Sub
i = WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0)
Hai cái này không liên quan với nhau gì cả anh ạ.Theo tôi hiểu thì bạn muốn hiện thông báo khi không tìm thấy dữ liệu
Code của bạn thể hiện việc tìm thấy qua biến
Vậy nếu không Match được thì sẽ lỗi công thức của i => bạn chỉ cần thay đoạn [C6] của bài #4 bằng công thức tương ứng của i là đượcMã:i = WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0)
Mình đã hướng dẫn ở bài #7. Nếu bạn để ý kỹ 1 chút sẽ rút ra vấn đề. Đây là Code vận dụng từ bài #4 nhéHai cái này không liên quan với nhau gì cả anh ạ.
Chẳng qua tên Sub nó giống nhau mà cho vào cùng 1 sheet thì nó bảo lổi . Em đã thử đổi tên Sub rồi mà không được. Anh chịu khó giúp em với
Em cảm ơn nhiều
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A32:A36,F32:F36]) Is Nothing Then Exit Sub
On Error Resume Next
Dim i As Long
With Sheet5 'The Kho'
i = WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0)
[B] If IsError(WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0)) = True Then[/B]
[B] frm.Show[/B]
[B] Else[/B]
If Cells(Target.Row, 6).Value > .Cells(i, 11).Value Then
MsgBoxUni UNC("HiÖn t¹i trong kho cßn l¹i ") & .Cells(i, 11) & " " & .Cells(i, 4), 48, "Thông báo"
Cells(Target.Row, 6) = .Cells(i, 11)
End If
[B] End If[/B]
End With
End Sub
em xin lỗi vì đã giải thích không rõ ràng.Mình đã hướng dẫn ở bài #7. Nếu bạn để ý kỹ 1 chút sẽ rút ra vấn đề. Đây là Code vận dụng từ bài #4 nhé
Mã:Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [A32:A36,F32:F36]) Is Nothing Then Exit Sub On Error Resume Next Dim i As Long With Sheet5 'The Kho' i = WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0) [B] If IsError(WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0)) = True Then[/B] [B] frm.Show[/B] [B] Else[/B] If Cells(Target.Row, 6).Value > .Cells(i, 11).Value Then MsgBoxUni UNC("HiÖn t¹i trong kho cßn l¹i ") & .Cells(i, 11) & " " & .Cells(i, 4), 48, "Thông báo" Cells(Target.Row, 6) = .Cells(i, 11) End If [B] End If[/B] End With End Sub
em xin lỗi vì đã giải thích không rõ ràng.
Thôi em gửi File thực lên để các anh chị giúp đỡ
Đây là dự định thôi.
nếu gọi form lên được thì cái form đó em sẽ dùng để nhập liệu vào sheet Data. Các anh chị giúp em với. Mục đích của em, em có đính kèm trong sheet phieuxuất in
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR=#ff0000][B]If IsError([c147]) = True Then UserForm1.Show
[/B][/COLOR] If Intersect(Target, [A174:A178,D174:D178]) Is Nothing Then Exit Sub
On Error Resume Next
Dim i As Long
With Sheet4 'The Kho'
i = WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0)
If Cells(Target.Row, 4).Value > .Cells(i, 11).Value Then
MsgBox ("Chi con ") & .Cells(i, 11)
Cells(Target.Row, 4) = .Cells(i, 11)
End If
End With
End Sub
Trước hết cảm ơn anh đã giúp đỡ.Thử them vào trên đầu xem, bạn test thử nhé
Mã:Private Sub Worksheet_Change(ByVal Target As Range) [COLOR=#ff0000][B]If IsError([c147]) = True Then UserForm1.Show [/B][/COLOR] If Intersect(Target, [A174:A178,D174:D178]) Is Nothing Then Exit Sub On Error Resume Next Dim i As Long With Sheet4 'The Kho' i = WorksheetFunction.Match(Cells(Target.Row, 1), .[b:b], 0) If Cells(Target.Row, 4).Value > .Cells(i, 11).Value Then MsgBox ("Chi con ") & .Cells(i, 11) Cells(Target.Row, 4) = .Cells(i, 11) End If End With End Sub
Thì đúng quá rồi, điều kiện lỗi là tại C147, với sự kiện Worksheet_ChangeForm gọi lên được nhưng lại lỗi mấy phần phía dưới Ví dụ như :C170, G170 nếu nhập liệu vào các cell này Form cũng hiện lên.
Nhờ anh xem giúp em với
Em cảm ơn
dạ cảm ơn anh. Em cũng vừa tìm ra vấn đề như anh nói. Vì vậy h][ngs khắc phục là không để Cell C147 bị lỗi mới tiếp tục làm các phần khácThì đúng quá rồi, điều kiện lỗi là tại C147, với sự kiện Worksheet_Change
Thế nên nếu C147 mà đang tại giá trị lỗi, bạn có thay đổi bất kỳ trong sheet thì code sẽ hoạt động thôi
=> Bạn phải nêu ra điểm mấu chốt của của vấn đề, chứ hỏi dần dần rồi áp dụng như thế này khó đạt yêu cầu lắm
Thân!