Bạn nên nêu câu hỏi trên diễn đàn;
Có vậy bạn sẽ nhận được câu trả lời chính xác hơn từ cộng đồng.
Anh ơi anh cho em hỏi khi viết liền code như sau:
"Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$3" Then
Dim sht As Worksheet, rng As Range
If Len([e3]) > 8 Then Set sht = Sheet2 Else Set sht = Sheet3
With sht
Set rng = .Range(.[B7], .Cells(.Rows.Count, "B").End(3)).Find([E4], , xlValues, xlWhole, , , True)
Application.EnableEvents = False
If rng Is Nothing Then
[e10] = 0
GoTo thoat
End If
[e10].Value = rng(, [e6] + 2).Value
End With
End If
thoat:
Application.EnableEvents = True
End Sub"
với là tách ra viết 2 đoạn khác nhau như sau:
- trong sheet viết:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$K$4" Then GPE Target.Value
End Sub
- trong module viết:
"
Sub GPE(Gt)
On Error Resume Next
Dim i As Long, k As Long
Dim Arr, dArr, sArr
Arr = Range(Sheet3.[B10], Sheet3.[B65000].End(3)).Resize(, 12)
ReDim dArr(1 To UBound(Arr, 1), 1 To 1)
ReDim sArr(1 To UBound(Arr, 1), 1 To 1)
k = 0
For i = 1 To UBound(Arr, 1)
If Year(Arr(i, 12)) = Gt Then
k = k + 1
dArr(k, 1) = Arr(i, 1)
sArr(k, 1) = Arr(i, 12)
End If
Next i
Sheet5.Range("B6:B20").ClearContents
Sheet5.Range("B6").Resize(k) = dArr
Sheet5.Range("G6:G20").ClearContents
Sheet5.Range("G6").Resize(k) = sArr
End Sub" nó sẽ khác nhau thế nào ạ???