Anh ơi . trước đây anh có làm cho em cái file này . hiện tại thì OK rồi . nhưng em muốn thêm chút nữa mong anh giúp ạ.
thay vì hiện tại chỉ áp dụng cho cột C . bây giờ em muốn cho nhiều cột ví dụ áp dụng cho cột từ A -> G thì làm như thế nào ạ. cảm ơn anh.
Anh ơi . trước đây anh có làm cho em cái file này . hiện tại thì OK rồi . nhưng em muốn thêm chút nữa mong anh giúp ạ.
thay vì hiện tại chỉ áp dụng cho cột C . bây giờ em muốn cho nhiều cột ví dụ áp dụng cho cột từ A -> G thì làm như thế nào ạ. cảm ơn anh.
Bạn muốn áp dụng cho 7, cột A:G, nhưng bạn quên giải thích cách kiểm tra dữ liệu trùng. Vd. tôi vừa nhập "hic" ở D8. Vậy code kiểm tra xem "hic" có xuất hiện > 1 lần trong cột D (cột hiện hành) hay là kiểm tra trong toàn vùng A1:Gxyz?
Tôi giả thiết là kiểm tra trùng luôn chỉ trong cột hiện hành. Tức nhập D8 = "Cam" -> kiểm tra trùng trong cột D, nhập G11 = "Nho" -> kiểm tra trùng trong cột G.
Code được sửa để áp dụng cho cột A:G.
Tôi sửa chay thôi. Bạn tự kiểm tra.
Thay toàn bộ code cũ bằng
Mã:
Private Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, badValue As Boolean, rng As Range
Dim PlaySound As Boolean
' neu nhieu o thay doi hoac thay doi tu cot 8 (cot H) tro di thi nghi choi
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
' neu la xoa du lieu thi nghi choi. Phai cho phep nguoi nhap kha nang xoa du lieu
If IsEmpty(Target.Value) Then Exit Sub
' kiem tra do dai chuoi
If Len(Target.Value) <> 3 Then
' o vua thay doi co do dai khac 3 . Thong bao
Call sndPlaySound32("C:\Windows\Media\ring01.wav ", 1)
MsgBox " SAI DATA"
badValue = True
End If
' kiem tra trung lap
With Sheet1
' dong cuoi cung co du lieu
lastRow = .Cells(Rows.Count, Target.Column).End(xlUp).Row
Target.EntireColumn.Select ' chon cot hien hanh
Selection.ClearFormats
.Cells(lastRow, Target.Column).Select
' neu lastRow = 1 thi khong kiem tra vi chi co 1 du lieu nen khong co chuyen trung lap
If lastRow > 1 Then
' vung du lieu can kiem tra - tu dong 1 toi dong lastRow trong cot hien hanh (cot co o vua thay doi)
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
' neu co trung thi thuc hien
If Application.CountIf(rng, Target.Value) > 1 Then
' du lieu vua nhap da xuat hien. Thong bao
Call sndPlaySound32("C:\Windows\Media\ring01.wav ", 1)
MsgBox " TRUNG DATA"
badValue = True
End If
End If
Target.Offset(1).Select
End With
If badValue Then
' du lieu vua nhap sai hoac trung. Vay xoa du lieu
' "Tat" phuc vu su kien Change vi neu khong thi khi xoa du lieu nhap sai hoac trung thi lai say ra
' su kien Change -> code lai duoc thuc hien.
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End Sub
Bạn muốn áp dụng cho 7, cột A:G, nhưng bạn quên giải thích cách kiểm tra dữ liệu trùng. Vd. tôi vừa nhập "hic" ở D8. Vậy code kiểm tra xem "hic" có xuất hiện > 1 lần trong cột D (cột hiện hành) hay là kiểm tra trong toàn vùng A1:Gxyz?
Tôi giả thiết là kiểm tra trùng luôn chỉ trong cột hiện hành. Tức nhập D8 = "Cam" -> kiểm tra trùng trong cột D, nhập G11 = "Nho" -> kiểm tra trùng trong cột G.
Code được sửa để áp dụng cho cột A:G.
Tôi sửa chay thôi. Bạn tự kiểm tra.
Thay toàn bộ code cũ bằng
Mã:
Private Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, badValue As Boolean, rng As Range
Dim PlaySound As Boolean
' neu nhieu o thay doi hoac thay doi tu cot 8 (cot H) tro di thi nghi choi
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
' neu la xoa du lieu thi nghi choi. Phai cho phep nguoi nhap kha nang xoa du lieu
If IsEmpty(Target.Value) Then Exit Sub
' kiem tra do dai chuoi
If Len(Target.Value) <> 3 Then
' o vua thay doi co do dai khac 3 . Thong bao
Call sndPlaySound32("C:\Windows\Media\ring01.wav ", 1)
MsgBox " SAI DATA"
badValue = True
End If
' kiem tra trung lap
With Sheet1
' dong cuoi cung co du lieu
lastRow = .Cells(Rows.Count, Target.Column).End(xlUp).Row
Target.EntireColumn.Select ' chon cot hien hanh
Selection.ClearFormats
.Cells(lastRow, Target.Column).Select
' neu lastRow = 1 thi khong kiem tra vi chi co 1 du lieu nen khong co chuyen trung lap
If lastRow > 1 Then
' vung du lieu can kiem tra - tu dong 1 toi dong lastRow trong cot hien hanh (cot co o vua thay doi)
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
' neu co trung thi thuc hien
If Application.CountIf(rng, Target.Value) > 1 Then
' du lieu vua nhap da xuat hien. Thong bao
Call sndPlaySound32("C:\Windows\Media\ring01.wav ", 1)
MsgBox " TRUNG DATA"
badValue = True
End If
End If
Target.Offset(1).Select
End With
If badValue Then
' du lieu vua nhap sai hoac trung. Vay xoa du lieu
' "Tat" phuc vu su kien Change vi neu khong thi khi xoa du lieu nhap sai hoac trung thi lai say ra
' su kien Change -> code lai duoc thuc hien.
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End Sub
Bạn muốn áp dụng cho 7, cột A:G, nhưng bạn quên giải thích cách kiểm tra dữ liệu trùng. Vd. tôi vừa nhập "hic" ở D8. Vậy code kiểm tra xem "hic" có xuất hiện > 1 lần trong cột D (cột hiện hành) hay là kiểm tra trong toàn vùng A1:Gxyz?
Tôi giả thiết là kiểm tra trùng luôn chỉ trong cột hiện hành. Tức nhập D8 = "Cam" -> kiểm tra trùng trong cột D, nhập G11 = "Nho" -> kiểm tra trùng trong cột G.
Code được sửa để áp dụng cho cột A:G.
Tôi sửa chay thôi. Bạn tự kiểm tra.
Thay toàn bộ code cũ bằng
Mã:
Private Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, badValue As Boolean, rng As Range
Dim PlaySound As Boolean
' neu nhieu o thay doi hoac thay doi tu cot 8 (cot H) tro di thi nghi choi
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
' neu la xoa du lieu thi nghi choi. Phai cho phep nguoi nhap kha nang xoa du lieu
If IsEmpty(Target.Value) Then Exit Sub
' kiem tra do dai chuoi
If Len(Target.Value) <> 3 Then
' o vua thay doi co do dai khac 3 . Thong bao
Call sndPlaySound32("C:\Windows\Media\ring01.wav ", 1)
MsgBox " SAI DATA"
badValue = True
End If
' kiem tra trung lap
With Sheet1
' dong cuoi cung co du lieu
lastRow = .Cells(Rows.Count, Target.Column).End(xlUp).Row
Target.EntireColumn.Select ' chon cot hien hanh
Selection.ClearFormats
.Cells(lastRow, Target.Column).Select
' neu lastRow = 1 thi khong kiem tra vi chi co 1 du lieu nen khong co chuyen trung lap
If lastRow > 1 Then
' vung du lieu can kiem tra - tu dong 1 toi dong lastRow trong cot hien hanh (cot co o vua thay doi)
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
' neu co trung thi thuc hien
If Application.CountIf(rng, Target.Value) > 1 Then
' du lieu vua nhap da xuat hien. Thong bao
Call sndPlaySound32("C:\Windows\Media\ring01.wav ", 1)
MsgBox " TRUNG DATA"
badValue = True
End If
End If
Target.Offset(1).Select
End With
If badValue Then
' du lieu vua nhap sai hoac trung. Vay xoa du lieu
' "Tat" phuc vu su kien Change vi neu khong thi khi xoa du lieu nhap sai hoac trung thi lai say ra
' su kien Change -> code lai duoc thuc hien.
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End Sub
Không lý gì tập tin ở bài #22 chạy không bị lỗi mà code ở bài #23 lại bị lỗi.
Nếu tập tin ở bài #22 bạn chạy với Excel phiên bản khác còn bây giờ bạn muốn chạy trong phiên bản khác thì tại sao trong bài #22 bạn không nói toạc ra?
----------
Ta sẽ khai báo đầy đủ hơn. Và dùng hàm mới hơn, đó là PlaySound
Mã:
Option Explicit
Private Const SND_FILENAME = &H20000
#If VBA7 Then
Private Declare PtrSafe Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As LongPtr, ByVal dwFlags As Long) As Long
#Else
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
#End If
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, badValue As Boolean, rng As Range
' neu nhieu o thay doi hoac thay doi tu cot 8 (cot H) tro di thi nghi choi
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
' neu la xoa du lieu thi nghi choi. Phai cho phep nguoi nhap kha nang xoa du lieu
If IsEmpty(Target.Value) Then Exit Sub
' kiem tra do dai chuoi
If Len(Target.Value) <> 3 Then
' o vua thay doi co do dai khac 3 . Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " SAI DATA"
badValue = True
End If
' kiem tra trung lap
With Sheet1
' dong cuoi cung co du lieu
lastRow = .Cells(Rows.Count, Target.Column).End(xlUp).Row
Target.EntireColumn.Select ' chon cot hien hanh
Selection.ClearFormats
.Cells(lastRow, Target.Column).Select
' neu lastRow = 1 thi khong kiem tra vi chi co 1 du lieu nen khong co chuyen trung lap
If lastRow > 1 Then
' vung du lieu can kiem tra - tu dong 1 toi dong lastRow trong cot hien hanh (cot co o vua thay doi)
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
' neu co trung thi thuc hien
If Application.CountIf(rng, Target.Value) > 1 Then
' du lieu vua nhap da xuat hien. Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " TRUNG DATA"
badValue = True
End If
End If
Target.Offset(1).Select
End With
If badValue Then
' du lieu vua nhap sai hoac trung. Vay xoa du lieu
' "Tat" phuc vu su kien Change vi neu khong thi khi xoa du lieu nhap sai hoac trung thi lai say ra
' su kien Change -> code lai duoc thuc hien.
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End Sub
Không lý gì tập tin ở bài #22 chạy không bị lỗi mà code ở bài #23 lại bị lỗi.
Nếu tập tin ở bài #22 bạn chạy với Excel phiên bản khác còn bây giờ bạn muốn chạy trong phiên bản khác thì tại sao trong bài #22 bạn không nói toạc ra?
----------
Ta sẽ khai báo đầy đủ hơn. Và dùng hàm mới hơn, đó là PlaySound
Mã:
Option Explicit
Private Const SND_FILENAME = &H20000
#If VBA7 Then
Private Declare PtrSafe Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As LongPtr, ByVal dwFlags As Long) As Long
#Else
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
#End If
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, badValue As Boolean, rng As Range
' neu nhieu o thay doi hoac thay doi tu cot 8 (cot H) tro di thi nghi choi
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
' neu la xoa du lieu thi nghi choi. Phai cho phep nguoi nhap kha nang xoa du lieu
If IsEmpty(Target.Value) Then Exit Sub
' kiem tra do dai chuoi
If Len(Target.Value) <> 3 Then
' o vua thay doi co do dai khac 3 . Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " SAI DATA"
badValue = True
End If
' kiem tra trung lap
With Sheet1
' dong cuoi cung co du lieu
lastRow = .Cells(Rows.Count, Target.Column).End(xlUp).Row
Target.EntireColumn.Select ' chon cot hien hanh
Selection.ClearFormats
.Cells(lastRow, Target.Column).Select
' neu lastRow = 1 thi khong kiem tra vi chi co 1 du lieu nen khong co chuyen trung lap
If lastRow > 1 Then
' vung du lieu can kiem tra - tu dong 1 toi dong lastRow trong cot hien hanh (cot co o vua thay doi)
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
' neu co trung thi thuc hien
If Application.CountIf(rng, Target.Value) > 1 Then
' du lieu vua nhap da xuat hien. Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " TRUNG DATA"
badValue = True
End If
End If
Target.Offset(1).Select
End With
If badValue Then
' du lieu vua nhap sai hoac trung. Vay xoa du lieu
' "Tat" phuc vu su kien Change vi neu khong thi khi xoa du lieu nhap sai hoac trung thi lai say ra
' su kien Change -> code lai duoc thuc hien.
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End Sub
Dạ tại trước đến giờ em dùng 2019. Hum qua em mới lên 365 . Nên em ko biết được là lên là bị lỗi.
Vơi lại hiện tại khi em nhập vào cột hiện hành mà sai hoặc trung data là nó xóa hết định dạng của cột đó lun ạ. Data vẫn còn nhưng ví dụ em kẻ khung tô màu cột đó là nó xóa lun. Anh giúp em nha.
Vơi lại hiện tại khi em nhập vào cột hiện hành mà sai hoặc trung data là nó xóa hết định dạng của cột đó lun ạ. Data vẫn còn nhưng ví dụ em kẻ khung tô màu cột đó là nó xóa lun. Anh giúp em nha.
Do trong bài #22 bạn tự ý thêm vài dòng code mà tôi lười không hỏi dụng ý của bạn là gì. Tôi đã cho là bạn cố tình làm như thế, vì vậy tôi không xóa các dòng đó.
Bạn thử lại code.
Mã:
Option Explicit
Private Const SND_FILENAME = &H20000
#If VBA7 Then
Private Declare PtrSafe Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As LongPtr, ByVal dwFlags As Long) As Long
#Else
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
#End If
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, badValue As Boolean, rng As Range
' neu nhieu o thay doi hoac thay doi tu cot 8 (cot H) tro di thi nghi choi
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
' neu la xoa du lieu thi nghi choi. Phai cho phep nguoi nhap kha nang xoa du lieu
If IsEmpty(Target.Value) Then Exit Sub
' kiem tra do dai chuoi
If Len(Target.Value) <> 3 Then
' o vua thay doi co do dai khac 3 . Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " SAI DATA"
badValue = True
End If
If Not badValue Then
' kiem tra trung lap
With Sheet1
' dong cuoi cung co du lieu
lastRow = .Cells(Rows.Count, Target.Column).End(xlUp).Row
' neu lastRow = 1 thi khong kiem tra vi chi co 1 du lieu nen khong co chuyen trung lap
If lastRow > 1 Then
' vung du lieu can kiem tra - tu dong 1 toi dong lastRow trong cot hien hanh (cot co o vua thay doi)
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
' neu co trung thi thuc hien
If Application.CountIf(rng, Target.Value) > 1 Then
' du lieu vua nhap da xuat hien. Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " TRUNG DATA"
badValue = True
End If
End If
End With
End If
If badValue Then
' du lieu vua nhap sai hoac trung. Vay xoa du lieu
' "Tat" phuc vu su kien Change vi neu khong thi khi xoa du lieu nhap sai hoac trung thi lai say ra
' su kien Change -> code lai duoc thuc hien.
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End Sub
Do trong bài #22 bạn tự ý thêm vài dòng code mà tôi lười không hỏi dụng ý của bạn là gì. Tôi đã cho là bạn cố tình làm như thế, vì vậy tôi không xóa các dòng đó.
Bạn thử lại code.
Mã:
Option Explicit
Private Const SND_FILENAME = &H20000
#If VBA7 Then
Private Declare PtrSafe Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As LongPtr, ByVal dwFlags As Long) As Long
#Else
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
#End If
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRow As Long, badValue As Boolean, rng As Range
' neu nhieu o thay doi hoac thay doi tu cot 8 (cot H) tro di thi nghi choi
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
' neu la xoa du lieu thi nghi choi. Phai cho phep nguoi nhap kha nang xoa du lieu
If IsEmpty(Target.Value) Then Exit Sub
' kiem tra do dai chuoi
If Len(Target.Value) <> 3 Then
' o vua thay doi co do dai khac 3 . Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " SAI DATA"
badValue = True
End If
If Not badValue Then
' kiem tra trung lap
With Sheet1
' dong cuoi cung co du lieu
lastRow = .Cells(Rows.Count, Target.Column).End(xlUp).Row
' neu lastRow = 1 thi khong kiem tra vi chi co 1 du lieu nen khong co chuyen trung lap
If lastRow > 1 Then
' vung du lieu can kiem tra - tu dong 1 toi dong lastRow trong cot hien hanh (cot co o vua thay doi)
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
' neu co trung thi thuc hien
If Application.CountIf(rng, Target.Value) > 1 Then
' du lieu vua nhap da xuat hien. Thong bao
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME
MsgBox " TRUNG DATA"
badValue = True
End If
End If
End With
End If
If badValue Then
' du lieu vua nhap sai hoac trung. Vay xoa du lieu
' "Tat" phuc vu su kien Change vi neu khong thi khi xoa du lieu nhap sai hoac trung thi lai say ra
' su kien Change -> code lai duoc thuc hien.
Application.EnableEvents = False
Target.Value = Empty
Target.Select
Application.EnableEvents = True
End If
End Sub
Anh ơi. Em thử thì thấy lệnh chạy hơi chậm. Hơi Delay 1 xíu. Bản trước đây thì nhanh cực kì lun. Ko biết cải thiện tốc độ được không. Hi
Với lại về phần msgbox thì chỉ hoạt động "sai data" còn "trùng data" thì không hoạt động được. Em thử tắt câu lệnh 'Target.value = empty đi thử mà cũng không được.
PlaySound "C:\Windows\Media\ring01.wav", 0, SND_FILENAME Or SND_ASYNC
Với lại về phần msgbox thì chỉ hoạt động "sai data" còn "trùng data" thì không hoạt động được. Em thử tắt câu lệnh 'Target.value = empty đi thử mà cũng không được.
Cảm ơn anh nhiều ạ.
Cho em hỏi thêm là ví dụ em muốn set cho nó hoạt động từ dòng 3 trở đi thì làm như thế nào ạ. Bây giờ em muốn dùng dòng 1 và 2 để ghi tiêu đề ý ạ. Nên không muốn nó quét lun dòng 1 ,2. Cảm ơn a.
Cảm ơn anh nhiều ạ.
Cho em hỏi thêm là ví dụ em muốn set cho nó hoạt động từ dòng 3 trở đi thì làm như thế nào ạ. Bây giờ em muốn dùng dòng 1 và 2 để ghi tiêu đề ý ạ. Nên không muốn nó quét lun dòng 1 ,2. Cảm ơn a.
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
thành
Mã:
If Target.Count > 1 Or Target.Column > 7 Or Target.Row < 3 Then Exit Sub
2. Sửa
Mã:
If lastRow > 1 Then
thành
Mã:
If lastRow > 3 Then
3. Sửa
Mã:
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
thành
Mã:
Set rng = Target.Offset(3 - Target.Row).Resize(lastRow - 2)
------------
Tóm lại nếu trong tương lai muốn từ dòng K thì:
1. Sửa
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
thành
If Target.Count > 1 Or Target.Column > 7 Or Target.Row < K Then Exit Sub
2. Sửa
If lastRow > 1 Then
thành
If lastRow > K Then
3. Sửa
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
thành
Set rng = Target.Offset(K - Target.Row).Resize(lastRow +1 - K)
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
thành
Mã:
If Target.Count > 1 Or Target.Column > 7 Or Target.Row < 3 Then Exit Sub
2. Sửa
Mã:
If lastRow > 1 Then
thành
Mã:
If lastRow > 3 Then
3. Sửa
Mã:
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
thành
Mã:
Set rng = Target.Offset(3 - Target.Row).Resize(lastRow - 2)
------------
Tóm lại nếu trong tương lai muốn từ dòng K thì:
1. Sửa
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
thành
If Target.Count > 1 Or Target.Column > 7 Or Target.Row < K Then Exit Sub
2. Sửa
If lastRow > 1 Then
thành
If lastRow > K Then
3. Sửa
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
thành
Set rng = Target.Offset(K - Target.Row).Resize(lastRow +1 - K)
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
thành
Mã:
If Target.Count > 1 Or Target.Column > 7 Or Target.Row < 3 Then Exit Sub
2. Sửa
Mã:
If lastRow > 1 Then
thành
Mã:
If lastRow > 3 Then
3. Sửa
Mã:
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
thành
Mã:
Set rng = Target.Offset(3 - Target.Row).Resize(lastRow - 2)
------------
Tóm lại nếu trong tương lai muốn từ dòng K thì:
1. Sửa
If Target.Count > 1 Or Target.Column > 7 Then Exit Sub
thành
If Target.Count > 1 Or Target.Column > 7 Or Target.Row < K Then Exit Sub
2. Sửa
If lastRow > 1 Then
thành
If lastRow > K Then
3. Sửa
Set rng = Target.Offset(1 - Target.Row).Resize(lastRow)
thành
Set rng = Target.Offset(K - Target.Row).Resize(lastRow +1 - K)
A ơi. Lâu rồi mới gặp lại ạ.
A giúp e 1 chút nữa về file này với ạ.
Trước đây mình quét cột B để để so sánh độ dài chuỗi là 8 . Giờ em muốn thêm nó quét thêm cột C so sánh độ dài chuỗi là 10 thì làm sao ạ. Em cảm ơn ạ.
A ơi. Lâu rồi mới gặp lại ạ.
A giúp e 1 chút nữa về file này với ạ.
Trước đây mình quét cột B để để so sánh độ dài chuỗi là 8 . Giờ em muốn thêm nó quét thêm cột C so sánh độ dài chuỗi là 10 thì làm sao ạ. Em cảm ơn ạ.