LeHang.93
Thành viên chính thức
- Tham gia
- 20/8/20
- Bài viết
- 53
- Được thích
- 9
Hiện tại em có xin được file tham chiếu tự động từ các cột vàng sang các cột xanh, tuy nhiên khi e làm lệnh xóa thì rất nặg và gây lỗi out of memory
Xin các Anh giúp em xem code có tối ưu chưa và có lỗi gì không mà gây ra hiện tượng kia ạ
Xin các Anh giúp em xem code có tối ưu chưa và có lỗi gì không mà gây ra hiện tượng kia ạ
'CODE TU DONG DIEN TEN KH VA NCC
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DMKH As Variant, DMNB As Variant
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, ActiveSheet.Columns("F:G")) Is Nothing Or Not Intersect(Target, ActiveSheet.Columns("N:O")) Is Nothing Then
With Sheets("DMKH")
lr = .UsedRange.Rows.Count
DMKH = .Range("A4:G" & lr).Value
End With
With Sheets("DMNB")
lr = .UsedRange.Rows.Count
DMNB = .Range("A4:G" & lr).Value
End With
With Sheets("DMTK")
DMTK = .Range("A4:E100").Value
End With
Else
Cells(iCell.Row, "V").Value = ""
For i = 1 To UBound(DMNB, 1)
If StrComp(iCell.Value, DMNB(i, 1), vbTextCompare) = 0 Then
Cells(iCell.Row, "V").Value = DMNB(i, 2)
Exit For
End If
Next i
End If
ElseIf iCell.Column = 14 Then
If iCell.Value = "" And iCell.Offset(0, 1).Value = "" Then
Cells(iCell.Row, "J").Value = ""
Cells(iCell.Row, "R").Value = ""
Else
If iCell.Value <> "" Then
For i = 1 To UBound(DMTK, 1)
If StrComp(iCell.Value, DMTK(i, 1), vbTextCompare) = 0 Then
If Len(DMTK(i, 5)) > 1 Then Cells(iCell.Row, "J") = DMTK(i, 5)
If Len(DMTK(i, 3)) > 1 Then Cells(iCell.Row, "R") = DMTK(i, 3)
Exit For
End If
Next i
ElseIf iCell.Offset(0, 1).Value <> "" Then
For i = 1 To UBound(DMTK, 1)
If StrComp(iCell.Offset(0, 1).Value, DMTK(i, 1), vbTextCompare) = 0 Then
If Len(DMTK(i, 5)) > 1 Then Cells(iCell.Row, "J") = DMTK(i, 5)
If Len(DMTK(i, 4)) > 1 Then Cells(iCell.Row, "R") = DMTK(i, 4)
Exit For
End If
Next i
End If
End If
ElseIf iCell.Column = 15 Then
If iCell.Value = "" And iCell.Offset(0, -1).Value = "" Then
Cells(iCell.Row, "J").Value = ""
Cells(iCell.Row, "R").Value = ""
Else
If iCell.Offset(0, -1).Value = "" Then
For i = 1 To UBound(DMTK, 1)
If StrComp(iCell.Value, DMTK(i, 1), vbTextCompare) = 0 Then
If Len(DMTK(i, 5)) > 1 Then Cells(iCell.Row, "J") = DMTK(i, 5)
If Len(DMTK(i, 4)) > 1 Then Cells(iCell.Row, "R") = DMTK(i, 4)
Exit For
End If
Next i
Else
If Len(Cells(iCell.Row, "J")) <= 1 Then
For i = 1 To UBound(DMTK, 1)
If StrComp(iCell.Value, DMTK(i, 1), vbTextCompare) = 0 Then
If Len(DMTK(i, 5)) > 1 Then Cells(iCell.Row, "J") = DMTK(i, 5)
Exit For
End If
Next i
End If
If Len(Cells(iCell.Row, "R")) <= 1 Then
For i = 1 To UBound(DMTK, 1)
If StrComp(iCell.Value, DMTK(i, 1), vbTextCompare) = 0 Then
If Len(DMTK(i, 4)) > 1 Then Cells(iCell.Row, "R") = DMTK(i, 4)
Exit For
End If
Next i
End If
End If
End If
End If
End If
Next iCell
End If
Erase DMKH
Erase DMNB
Erase DMTK
Application.EnableEvents = True
End Sub
Lần chỉnh sửa cuối: