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
 
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
Người ta viết tắt đó bạn. End(3) = End(xlUp)AdvancedFilter 2 = AdvancedFilter xlFilterCopy
 
Upvote 0
Thế thì em nhờ các AC xem dùm em sao đoạn code này bị lỗi. Khi em gỏ số phiếu vào ô C3 thì bị lỗi. Mong các AC xem file đính kèm.
 

File đính kèm

Upvote 0
Mong các AC viết cho em đoạn code để hiện Msgbox khi không có số phiếu nào trùng với ô C3
 
Upvote 0
Mong các AC viết cho em đoạn code để hiện Msgbox khi không có số phiếu nào trùng với ô C3
Thử cái này xem sao:
[GPECODE=vb]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!"
End Sub[/GPECODE]
 
Upvote 0
Paste vào đâu hả Anh? Sao em dán vào sheet 2 không có tác dụng Anh??
 
Upvote 0
Thử cái này xem sao:
[GPECODE=vb]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!"
End Sub[/GPECODE]
Code trên em sửa thành (chữ màu đỏ)
Mã:
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!"
    
[B][COLOR=#ff0000]    Sheet2.[C3].ClearContents[/COLOR][/B]
    End If
End Sub
Mục đích vừa thông báo vừa xóa luôn cell C3 của Sheet 2
Nhưng khi thông báo "Khong tim thay!" thì không thể tắt được thông báo này
Xin vui lòng sửa code & chỉ giúp chỗ sai!
Em cảm ơn!
 
Upvote 0
Code trên em sửa thành (chữ màu đỏ)
Mã:
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!"
    
[B][COLOR=#ff0000]    Sheet2.[C3].ClearContents[/COLOR][/B]
    End If
End Sub
Mục đích vừa thông báo vừa xóa luôn cell C3 của Sheet 2
Nhưng khi thông báo "Khong tim thay!" thì không thể tắt được thông báo này
Xin vui lòng sửa code & chỉ giúp chỗ sai!
Em cảm ơn!

Anh NghĩaPhúc đã chỉ rõ rồi mà bạn
Bạn chèn vào đâu đó trong Sub Loc_pn là được mà, cứ thử đi.

Tức là dán như thế này
Mã:
Sub Loc_pn()
'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!"
[B][COLOR=#ff0000]              Sheet2.[C3].ClearContents[/COLOR][/B]
        End If
'Sub Loc_pn
   [B8:F1000].ClearContents
   With Sheet1
      .Range(.[A3], .[G65536].End(3)).AdvancedFilter 2, [C2:C3], [C7:F7]
      [C4] = .[B:B].Find([C3]).Offset(, -1)
   End With
   Range([C8], [C65536].End(3)).Offset(, -1) = [row(a:a)]
End Sub
 
Upvote 0
Anh NghĩaPhúc đã chỉ rõ rồi mà bạn


Tức là dán như thế này
Mã:
Sub Loc_pn()
'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!"
[B][COLOR=#ff0000]              Sheet2.[C3].ClearContents[/COLOR][/B]
        End If
'Sub Loc_pn
   [B8:F1000].ClearContents
   With Sheet1
      .Range(.[A3], .[G65536].End(3)).AdvancedFilter 2, [C2:C3], [C7:F7]
      [C4] = .[B:B].Find([C3]).Offset(, -1)
   End With
   Range([C8], [C65536].End(3)).Offset(, -1) = [row(a:a)]
End Sub
Em đã thử code trên cũng không được
Bây giờ anh thử nhập SAI số phiếu tại ô C3 của sheet2 xem nó bị sao!
Em cảm ơn!
 

File đính kèm

Upvote 0
Hiểu ý bạn rồi, bạn sử đoạn Test như thế này
Mã:
    [COLOR=#000000][I]Sub Test() 
   Dim Rng As Range
[/I][/COLOR]      Application.EnableEvents = True
  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!"
[FONT=Verdana]                Application.EnableEvents = False
[/FONT][B][COLOR=#ff0000]                    Sheet2.[C3].ClearContents
[/COLOR][/B]       End If
 [COLOR=#000000][I]End Sub
[/I][/COLOR]
 
Upvote 0
Hiểu ý bạn rồi, bạn sử đoạn Test như thế này
Mã:
    [COLOR=#000000][I]Sub Test() 
   Dim Rng As Range
[/I][/COLOR]      Application.EnableEvents = True
  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!"
[FONT=Verdana]                Application.EnableEvents = False
[/FONT][B][COLOR=#ff0000]                    Sheet2.[C3].ClearContents
[/COLOR][/B]       End If
 [COLOR=#000000][I]End Sub
[/I][/COLOR]
Lần đầu , nhập sai -> báo lỗi. Tắt báo lỗi, nhập sai lần nữa, không thèm thông báo luôn
Hi Hi, ai xem giúp em.Em cảm ơn
 
Upvote 0
Sao em làm giông các Ac mà chả thấy báo gì hết. Mong các Ac giúp em khi đúng số phiếu thì lọc rếucòn không có thì báo lỗi.
 
Upvote 0
Lần đầu , nhập sai -> báo lỗi. Tắt báo lỗi, nhập sai lần nữa, không thèm thông báo luôn
Hi Hi, ai xem giúp em.Em cảm ơn
Bạn phải sửa lại như thế này mới đúng.
[gpecode=vb]
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
Application.EnableEvents = True
End If
End Sub[/gpecode]
 
Upvote 0
Em chèn thêm đoạn code này để xóa đi dữ liệu của phiếu trước mà không được
(màu đỏ), mong các AC giúp đỡ.(vì khi gỏ phiếu sai thì vẫn còn lại dữ liệu của phiếu đúng)
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
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 nhìn quen quá. Nếu không nhầm thì code này có kèm thêm 1 code để tạo validation list. Sao không xai luôn code đó cho khoẻ để tránh việc nhập sai thông tin tại C3
 
Upvote 0
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

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

Back
Top Bottom