Cách Viết Code Delete Shift:=xlUp Cells Excel Theo Name

Liên hệ QC

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,538
Được thích
4,128
Giới tính
Nam
Các Bạn cho mình hỏi 1 chút
1/ Có cách nào viết code xóa Delete Shift:=xlUp vùng dữ liệu theo cái Name trong Excel hay không ???

2/ Trong cái Name Tên ESQL_1 đó có vùng cần Delete là =Sheet2!$A$3:$C$67

3/ Lưu ý vùng dữ liệu luôn biến động vì vậy phài căn cứ vào hộp Name ( Refers to: ) đó mà Delete theo tên Sheets

4/ Mạnh loay hay mãi ko làm được nhờ các Bạn viết code dùm

Xin cảm ơn
GPE.PNG
 

File đính kèm

Lần chỉnh sửa cuối:
Anh không hiểu làm đại 3 cái hên thì trúng 1 cái (chỉ xóa dữ liệu không xóa Name).

Mã:
Sub Xoa()
    Sheet2.Range("A3").CurrentRegion.ClearContents
En d Sub

Sub Xoa2()
    Sheet2.Range("A3:C" & Cells(Rows.Count, "A").End(xlUp).Row).ClearContents
End Sub

Sub Xoa3()
    Dim ws As Worksheet, DongCuoi As Long
    Set ws = Sheets("Sheet2")
    DongCuoi = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
    ws.Range("A3", ws.Range("C" & DongCuoi)).ClearContents
End Sub
 
Upvote 0
Anh không hiểu làm đại 3 cái hên thì trúng 1 cái (chỉ xóa dữ liệu không xóa Name).

Mã:
Sub Xoa()
    Sheet2.Range("A3").CurrentRegion.ClearContents
En d Sub

Sub Xoa2()
    Sheet2.Range("A3:C" & Cells(Rows.Count, "A").End(xlUp).Row).ClearContents
End Sub

Sub Xoa3()
    Dim ws As Worksheet, DongCuoi As Long
    Set ws = Sheets("Sheet2")
    DongCuoi = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
    ws.Range("A3", ws.Range("C" & DongCuoi)).ClearContents
End Sub
Anh hiểu sai ý Em rồi ... ý em là căn cứ vào cái vùng dữ liệu cần Delete đó nó nằm trong Hộp Name Refers To: ấy
Còn code như vậy em cũng viết được

Chỉ Delete vùng dữ liệu theo Name chứ không xóa Name
Vùng dữ liệu đó nó luôn biến động chứ ko cố định ( kể cả tên Sheet )

Vì vậy căn cứ Vào Tên Name và vùng đó để mà xóa

Cảm ơn Anh
 
Lần chỉnh sửa cuối:
Upvote 0
Anh hiểu sai ý Em rồi ... ý em là căn cứ vào cái vùng dữ liệu cần Delete đó nó nằm trong Hộp Name Refers To: ấy
Còn code như vậy em cũng viết được

Chỉ Delete vùng dữ liệu theo Name chứ không xóa Name
Vùng dữ liệu đó nó luôn biến động chứ ko cố định ( kể cả tên Sheet )

Vì vậy căn cứ Vào Tên Name và vùng đó để mà xóa

Cảm ơn Anh
Vậy thì thử code sau, gõ tên Name range vào InputBox để xóa vùng của Name đó.

Mã:
Sub Xoa_NameRanges()
    Dim Ten As Name
    Dim DauRa As String
    
    On Error Resume Next
    DauRa = Application.InputBox("GO TÊN NAME RANGE MUÓN XÓA VÙNG:", "be09", , , , , , 2)
    If DauRa = "False" Then Exit Sub
    Application.ScreenUpdating = False
    Set Ten = ActiveWorkbook.Names(DauRa)
    If Not Ten Is Nothing Then
         Ten.RefersToRange.Clear
    End If
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Vậy thì thử code sau, gõ tên Name range vào InputBox để xóa vùng của Name đó.

Mã:
Sub Xoa_NameRanges()
    Dim Ten As Name
    Dim DauRa As String
   
    On Error Resume Next
    DauRa = Application.InputBox("GO TÊN NAME RANGE MUÓN XÓA VÙNG:", "be09", , , , , , 2)
    If DauRa = "False" Then Exit Sub
    Application.ScreenUpdating = False
    Set Ten = ActiveWorkbook.Names(DauRa)
    If Not Ten Is Nothing Then
         Ten.RefersToRange.Clear
    End If
    Application.ScreenUpdating = True
End Sub
Không được anh
Mà em muốn mọi cái trong code ấy chứ không xài cái Application.InputBox xong nhập tên vô nó mất công lắm

Code tự đông lấy tên Name xong xóa vùng dữ liệu theo Name
 
Upvote 0
trong VBA thì cứ
Range(<name>) là tự động theo name
Chắc bạn hỏi ý khác chăng?
 
Upvote 0
Anh hiểu sai ý Em rồi ... ý em là căn cứ vào cái vùng dữ liệu cần Delete đó nó nằm trong Hộp Name Refers To: ấy
Còn code như vậy em cũng viết được

Chỉ Delete vùng dữ liệu theo Name chứ không xóa Name
Vùng dữ liệu đó nó luôn biến động chứ ko cố định ( kể cả tên Sheet )
Vì vậy căn cứ Vào Tên Name và vùng đó để mà xóa
Bạn có thói quen hỏi nhưng rất tiết kiệm lời.

Trong tập tin của bạn vùng là A3:C67, name là ESQL_1. Bạn hãy thao tác bằng tay và chọn xóa toàn bộ A3:C67. Sau đó kiểm tra xem có còn reference nữa không. Còn Name mà reference nó phi lên trời rồi thì ... Hay trong trường hợp này thì thiết lập lại reference? Nhưng bạn có giải thích gì đâu.

Bạn không nói bạn cần xóa hết cả vùng của name hay chỉ một "chút", vì bạn tiết kiệm thời gian, sức lực của mình mà. Không ai tiếc thời gian, sức lực của người khác?

Nếu nói 1 lần mà không ai hiểu đúng 100%, chỉ hiểu vd. 99% thì ngay sau đó phải nghĩ cách giải thích khác. Không thể lại cộc lốc vài câu như trước được.

Vd. thế này. Bạn không biết viết code nhưng bạn phải biết những parameter của sub đó như thế nào. Bạn sẽ cung cấp dưới dạng chuỗi? Vd. name dưới dạng "Sheet2!ESQL_1", còn vùng muốn xóa là "A3:C67" (xóa hết) hoặc "A3:C43", "A10:C62" (chỉ xóa một số dòng)? Hay dưới dạng khác? Hoặc bạn chỉ cung cấp tên "ESQL_1" còn code phải tìm ra nó reference tới vùng nào trên sheet nào?

Hãy viết cụ thể thì dễ hơn cho những người giúp bạn. Còn tôi thì không quan tâm.
 
Upvote 0
Không được anh
Mà em muốn mọi cái trong code ấy chứ không xài cái Application.InputBox xong nhập tên vô nó mất công lắm

Code tự đông lấy tên Name xong xóa vùng dữ liệu theo Name
Vậy thì thử cái này, nó sẽ xóa vùng chứa dữ liệu của 3 Name Range này: BE, TT, NH

Mã:
Sub XoaNhieuName()
    Application.Goto Reference:="BE,TT,NH"
    Selection.ClearContents
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
So sánh với cái này

thì chắc chắn không đúng.
Code bài 8 em sửa lại 1 tẹo là đúng ý em rồi đó Anh
Tuy nhiên làm được cái này nó lại phát sinh cái khác mà em chưa nghĩ tới !!!
mai mốt rảnh em coi lại hết nhiều cái liên quan xong em nhờ luôn một lượt :p
 
Upvote 0
Web KT

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

Back
Top Bottom