Code End(3) (1 người xem)

  • Thread starter Thread starter quykh
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

quykh

Chim non
Tham gia
7/9/11
Bài viết
381
Được thích
46
Giới tính
Nữ
Nghề nghiệp
Công Nhân
Xin các AC giải thích code End(3)AdvancedFilter 2 dùm em trong đoạn code dưới:

Sub Loc_co_dk()
[B8:F1000].ClearContents
With Sheet7
.Range(.[A3], .[I65536].End(3)).AdvancedFilter 2, [C2:C3], [C7:F7]
[C4] = .[B:B].Find([C3]).Offset(, -1)
[C5] = .[B:B].Find([C3]).Offset(, 1)
[C6] = .[B:B].Find([C3]).Offset(, 2)
End With
Range([C8], [C65536].End(3)).Offset(, -1) = [row(a:a)]
End Sub
 
Code này của Anh viết đó. Em tải về từ bài" Code tìm số phiếu" và em cắt code validation list đi, vì trong công việc của em thì thấy gỏ thẳng vào thì nhanh hơn(Sếp hỏi số phiếu nào, gỏ thẳng nhanh hơn dò cả mấy ngàn phiếu thì lâu lắm). Cũng mong Anh chỉ giáo cho bài #19 của em trong box này. Xin cám ơn!!!!!
 
Upvote 0
Mong các AC giúp em chỉnh đoạn code bài 19 (màu đỏ) sao nó không xóa được!!! Ah mà quên, chắc bây giờ các AC đang vui Noel nên chắc chả có ai Online!!! Chúc Các AC Noel An Lành, Hạnh Phúc!!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Sao bài của em không ai trả lời vậy???? Em có lỗi là lúc đầu em nhờ Anh Quanghai1969, nhưng về sau em có nhờ các AC trong DD trả lời mà tới bây giờ không ai giúp em hiểu tại sao đoạn code : Sheet2 [B8:F20] .ClearContents em chèn vào không thực hiện được??? Mong các AC trong DD giúp em!!!!
Sub Test()
Dim Rng As Range
With Sheet1
Set Rng = .Range(.[B4], .[B65536].End(xlUp)).Find(Sheet2.[C3], lookat:=xlWhole)
End With
If Rng Is Nothing Then
MsgBox "Khong tim thay!"
Application.EnableEvents = False
Sheet2.[C3].ClearContents
Sheet2.[B8:F20].ClearContents

Application.EnableEvents = True
End If

End Sub
 
Upvote 0
Sao bài của em không ai trả lời vậy???? Em có lỗi là lúc đầu em nhờ Anh Quanghai1969, nhưng về sau em có nhờ các AC trong DD trả lời mà tới bây giờ không ai giúp em hiểu tại sao đoạn code : Sheet2 [B8:F20] .ClearContents em chèn vào không thực hiện được??? Mong các AC trong DD giúp em!!!!
Sub Test()
Dim Rng As Range
With Sheet1
Set Rng = .Range(.[B4], .[B65536].End(xlUp)).Find(Sheet2.[C3], lookat:=xlWhole)
End With
If Rng Is Nothing Then
MsgBox "Khong tim thay!"
Application.EnableEvents = False
Sheet2.[C3].ClearContents
Sheet2.[B8:F20].ClearContents

Application.EnableEvents = True
End If

End Sub

Nếu không tìm thấy thì xóa, còn tìm thấy thì không xóa đúng không bạn?

Cho hỏi thêm, bạn đặt thủ tục này tại đâu? Trong Sheet hay trong Module vậy? Bạn thử đặt trong Module xem.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ ý em là không tìm thấy thì làm sao mà có dữ liệu, thế mà ra Msgbox là không tìm thấy mà vẫn còn dữ liệu của phiếu đúng. Nên em thêm đoạn code trên trong Module luôn mà nó vẫn không chạy. Mong các AC giải thích dùm em sai chỗ nào??? Nếu được mong các AC chỉnh luôn cho em vì em gà về VBA lắm!!!!
 
Upvote 0
Dạ ý em là không tìm thấy thì làm sao mà có dữ liệu, thế mà ra Msgbox là không tìm thấy mà vẫn còn dữ liệu của phiếu đúng. Nên em thêm đoạn code trên trong Module luôn mà nó vẫn không chạy. Mong các AC giải thích dùm em sai chỗ nào??? Nếu được mong các AC chỉnh luôn cho em vì em gà về VBA lắm!!!!

Từ đầu topic đến giờ tôi chưa thấy cái file của bạn, bạn nên gửi file lên đi.

Với đoạn code này tôi nghĩ nó còn thiếu:

Set Rng = .Range(.[B4], .[B65536].End(xlUp)).Find(Sheet2.[C3], LookAt:=xlWhole)

Nên thêm một tí xem sao:

Set Rng = .Range(.[B4], .[B65536].End(xlUp)).Find(Sheet2.[C3], LookIn:=xlValues, LookAt:=xlWhole)

Gửi file lên đi sẽ được hướng dẫn tốt hơn.
 
Upvote 0
Dạ file đó đây Ah!!! Mong các AC giúp đỡ.( Khi không tìm thấy thì báo lỗi và không có dữ liệu nhưng sao từ ô B8 đến F20 vẫn còn dữ liệu, tức là không tìm thấy thì bảng tính phải trắng không có dữ liệu chứ)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dạ file đó đây Ah!!! Mong các AC giúp đỡ.( Khi không tìm thấy thì báo lỗi và không có dữ liệu nhưng sao từ ô B8 đến F20 vẫn còn dữ liệu, tức là không tìm thấy thì bảng tính phải trắng không có dữ liệu chứ)

Bạn sửa lại như thế này xem:

[GPECODE=vb]Sub Loc_pn()
Dim findRng As Range
With Sheet2
Set findRng = Range(Sheet1.[B4], Sheet1.[B65536].End(xlUp)) _
.Find(.[C3], LookIn:=xlValues, LooKat:=xlWhole)
.[B8:F1000,C4].ClearContents
If findRng Is Nothing Then
MsgBox "Khong tim thay!"
.[C3].ClearContents
Else
Range(Sheet1.[A3], Sheet1.[G65536].End(3)).AdvancedFilter 2, .[C2:C3], .[C7:F7]
.[C4] = findRng.Offset(, -1).Value
Range(.[C8], .[C65536].End(3)).Offset(, -1) = [row(a:a)]
End If
Set findRng = Nothing
End With
End Sub
[/GPECODE]

Đồng thời, trong sheet module bạn cũng nên sửa lại như thế này cho tăng tốc:

[GPECODE=vb]Private Sub Worksheet_Change(ByVal Target As Range)
With Application
If Not .Intersect(Target, [C3]) Is Nothing Then
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
Call Loc_pn
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End If
End With
End Sub
[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom