Cái này lòng vòng quá , không hiểu.Em đang tìm hiều về vòng lặp For Next. Nhưng trong ví dụ này không hiểu sao vẫn không cho kết quả đúng. Em đưa bài lên đây nhờ mọi người giúp em nhé!
Sub Tim()
Dim Vung As Range, MyR As Range, Gtri As Range
Dim cll
Dim eR As Long
Set Gtri = S1.Range("D1")
eR = S1.Range("C1000").End(3).Row
Set Vung = S1.Range(S1.[a2], S1.[a1000].End(3))
Set MyR = Vung.Find(cll, , xlValues, xlWhole)
With S1
.Range("B2:B" & eR).ClearContents
'Em dang tim hieu ve vong lap nay nho moi nguoi chi ky cho em nhe!
For Each cll In Vung
If cll.Value = Gtri.Value Then
.Cells(eR, 2) = cll.Value
Else
'Sao em bay loi the nay van khong on?
MsgBox "Ma nay khong co. Hay tim lai!", , "GPE"
Exit Sub
End If
Next
End With
Set Gtri = Nothing
Set Vung = Nothing
Set MyR = Nothing
End Sub
Public Sub GPE()
Dim Rngs As Range, Clls As Range
Set Rngs = Range("A2:A" & Range("A1000").End(xlUp).Row)
Rngs.Offset(, 1).ClearContents
If Application.WorksheetFunction.CountIf(Rngs, [D1]) > 0 Then
For Each Clls In Rngs
If Clls.Value = [D1].Value Then Clls.Offset(, 1).Value = Clls.Value
Next
Else
MsgBox "Khong co Ma nay"
End If
Set Rngs = Nothing
End Sub
Option Explicit
Sub Tim()
Dim Vung As Range, MyR As Range, GTri As Range
Dim Cll, eR As Long
Set GTri = S1.Range("D1")
2 eR = S1.Range("C1000").End(3).Row
Set Vung = S1.Range(S1.[a2], S1.[a1000].End(3))
4 Set MyR = Vung.Find(Cll, , xlValues, xlWhole)
With S1
.Range("B2:B" & eR).ClearContents
'Em dang tim hieu ve vong lap nay nho moi nguoi chi ky cho em nhe!
For Each Cll In Vung
If Cll.Value = GTri.Value Then
.Cells(eR, 2) = Cll.Value
Else
'Sao em bay loi the nay van khong on?
MsgBox "Ma nay khong co. Hay tim lai!", , "GPE"
Exit Sub
End If
Next
End With
Set GTri = Nothing: Set Vung = Nothing
Set MyR = Nothing
End Sub
Sub TimTiep()
Dim GTri, Vung As Range, MyR As Range, Cls As Range
Dim eR As Long
GTri = S1.Range("D1").Value
eR = S1.Range("A1000").End(xlUp).Row
Set Vung = S1.[a2].Resize(eR)
6 Set MyR = Vung.Find(GTri, , xlValues, xlWhole)
If Not MyR Is Nothing Then
S1.Range("B2:B" & eR).ClearContents
Set Vung = MyR.Resize(eR)
For Each Cls In Vung
With S1.Cells(eR, "B").End(xlUp).Offset(1)
If Cls.Value = GTri Then .Value = GTri
End With
Next Cls
Else
MsgBox "Nothing"
End If
End Sub
Em đang tìm hiều về vòng lặp For Next. Nhưng trong ví dụ này không hiểu sao vẫn không cho kết quả đúng. Em đưa bài lên đây nhờ mọi người giúp em nhé!
Sub Macro2()
[b2:b65000].Clear
For Each cls In Range([a2], [a65000].End(3))
If cls = [d1] Then [b65000].End(3)(2) = cls
Next
End Sub
Vì tác giả đưa fương thức tìm kiếm vô để thoát ngay vòng lặp khi không tìm thấy trị;
Tuy nhiên tác giả chưa nhuần nhuyễn fương thức này, nên macro chưa theo mong mõi!
Sub Tim()
Range("B:B").ClearContents
Range("A:A").AdvancedFilter 2, Range("D1:D2"), Range("B1")
End Sub
Vậy dòng lệnh trước số 6 nên sửa lại là vầy sẽ đúng