Xin code xóa dữ liệu trong sheet có tên "BA"

Hoang_Thuyet

Thành viên mới
Tham gia ngày
21 Tháng mười hai 2018
Bài viết
4
Được thích
0
Điểm
13
Tuổi
28
Mình có 1 bài toán cần cả nhà giúp.
Trong 1 sheet có tên "BA" chỉ xóa dữ liệu ở sheet này , vùng cần xóa dữ liệu bắt đầu từ A10 đến Wxx trong đó xx là dòng cuối cùng của cột A có chứa dữ liệu, tức là cột từ A10 đến A100 có dữ liệu thì xóa dữ liệu vùng A10:W100 . Xin cảm ơn
 

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
6,649
Được thích
10,796
Điểm
1,860
Bạn thử xem sao:
PHP:
Sub XoaVungDLTheoDongCuoiCotATrenTrang_BA()
 Dim Sh As Worksheet:                           Dim Rws As Long
 
 For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = "BA" Then
        Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
        Sh.Range("A10: W" & Rws).ClearContents
        Exit For
    End If
 Next Sh
End Sub
 

batman1

Thành viên gắn bó
Tham gia ngày
8 Tháng chín 2014
Bài viết
3,100
Được thích
4,575
Điểm
560
Bạn thử xem sao:
PHP:
Sub XoaVungDLTheoDongCuoiCotATrenTrang_BA()
Dim Sh As Worksheet:                           Dim Rws As Long

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = "BA" Then
        Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
        Sh.Range("A10: W" & Rws).ClearContents
        Exit For
    End If
Next Sh
End Sub
Biết tên sheet rồi thì sao lại dùng FOR nhỉ.

Ngoài ra code không chuẩn:
1. Dòng
Mã:
Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
sẽ có lỗi nếu ô cuối cùng của cột A là text. Vì sao? Vì thuộc tính mặc định của Range không là ROW mà là VALUE. Viết thế đồng nghĩa với Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp).Value. Khi ô cuối là text thì dĩ nhiên Rws = text sẽ gây lỗi.

2. Nếu chỉ có vd. A1 <> rỗng, hoặc A1 = rỗng còn A2:Acuối cùng = rỗng thì code sẽ xóa toàn bộ dữ liệu quan trọng tại B1:W9 nếu có. Mà dụng ý là không xóa gì ở những dòng 1:9
 
Lần chỉnh sửa cuối:

Hoang_Thuyet

Thành viên mới
Tham gia ngày
21 Tháng mười hai 2018
Bài viết
4
Được thích
0
Điểm
13
Tuổi
28
Bạn thử xem sao:
PHP:
Sub XoaVungDLTheoDongCuoiCotATrenTrang_BA()
Dim Sh As Worksheet:                           Dim Rws As Long

For Each Sh In ThisWorkbook.Worksheets
    If Sh.Name = "BA" Then
        Rws = Sh.Cells(Sh.Rows.Count, "A").End(xlUp)
        Sh.Range("A10: W" & Rws).ClearContents
        Exit For
    End If
Next Sh
End Sub
Thank bác em đã làm đc ạ
 

Hoang_Thuyet

Thành viên mới
Tham gia ngày
21 Tháng mười hai 2018
Bài viết
4
Được thích
0
Điểm
13
Tuổi
28
Bác giúp em viết cái vba sử dụng như hàm CONCATENATE với ạ.
Sau khi em input tự động thì ở cột X sẽ là :
X1=A1 concatenate F1
Tương tự chạy đến Xn=An concatenate Fn
Với n là dòng cuối có dữ liệu cột A
 

vanthinh3101

Thành viên tích cực
Tham gia ngày
24 Tháng một 2015
Bài viết
865
Được thích
962
Điểm
560
Tuổi
32
Nơi ở
Hà Nội
Bác giúp em viết cái vba sử dụng như hàm CONCATENATE với ạ.
Sau khi em input tự động thì ở cột X sẽ là :
X1=A1 concatenate F1
Tương tự chạy đến Xn=An concatenate Fn
Với n là dòng cuối có dữ liệu cột A
Nếu chỉ đơn giản như vậy sao bạn không dùng công thức:
PHP:
X1=A1&F1
Enter, Fill xuống.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,916
Được thích
8,592
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Mình có 1 bài toán cần cả nhà giúp.
Trong 1 sheet có tên "BA" chỉ xóa dữ liệu ở sheet này , vùng cần xóa dữ liệu bắt đầu từ A10 đến Wxx trong đó xx là dòng cuối cùng của cột A có chứa dữ liệu, tức là cột từ A10 đến A100 có dữ liệu thì xóa dữ liệu vùng A10:W100 . Xin cảm ơn
Thử code sau (chừa lại tiêu đề dòng 9).
Mã:
Sub Xoa()
    Sheets("BA").Range("A9").CurrentRegion.Offset(1).ClearContents
End Sub
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,916
Được thích
8,592
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai

vanthinh3101

Thành viên tích cực
Tham gia ngày
24 Tháng một 2015
Bài viết
865
Được thích
962
Điểm
560
Tuổi
32
Nơi ở
Hà Nội
Khi số dòng tăng thì kết quả nhận được vẫn là A1&F1 đấy.
Khi số dòng tăng thì kết quả nhận được vẫn là A1&F1 đấy.
Cái này tôi nhầm vì cột F chưa có đủ dữ liệu để xác định số dòng, sửa lại thế này mới đúng:
PHP:
Range("A1",Range("A1").end(xldown)).offset(,23).Formula="=A1&F1"
Bạn chạy thử sẽ thấy không sai.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,916
Được thích
8,592
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai

Thong Hoang Tien 250691

Thành viên hoạt động
Tham gia ngày
14 Tháng năm 2017
Bài viết
141
Được thích
125
Điểm
180
Tuổi
28
Nơi ở
Tiên Du - Bắc Ninh
Thử code sau (chừa lại tiêu đề dòng 9).
Mã:
Sub Xoa()
    Sheets("BA").Range("A9").CurrentRegion.Offset(1).ClearContents
End Sub
Em xin phép, code anh be09 đang viết dùng " .CurrentRegion " nghĩa là vùng hiện tại. Cái này chưa đủ vì nếu vùng dữ liệu cột A10 đến Wxx mà không liên tục (có blank ở giữa các cột, các dòng) thì code sẽ bỏ qua luôn không xóa kể từ cái blank ấy.
Ngoài ra nếu tiêu đề dòng 9 mà có dữ liệu liên tục đến ra ngoài cột W ( ví dụ là A9:AA9 ) thì nó sẽ xóa đến hết cột AA luôn.
Anh/Chị thử:
Mã:
Sub DDEL()
On Error GoTo a
    ThisWorkbook.Sheets("BA").Range("A10:W" & Sheets("BA").Range("A" & Rows.Count).End(xlUp).Row).ClearContents
a:
    MsgBox ("Khong co sheet BA")
End Sub
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,916
Được thích
8,592
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Em xin phép, code anh be09 đang viết dùng " .CurrentRegion " nghĩa là vùng hiện tại. Cái này chưa đủ vì nếu vùng dữ liệu cột A10 đến Wxx mà không liên tục (có blank ở giữa các cột, các dòng) thì code sẽ bỏ qua luôn không xóa kể từ cái blank ấy.
Ngoài ra nếu tiêu đề dòng 9 mà có dữ liệu liên tục đến ra ngoài cột W ( ví dụ là A9:AA9 ) thì nó sẽ xóa đến hết cột AA luôn.
Anh/Chị thử:
Mã:
Sub DDEL()
On Error GoTo a
    ThisWorkbook.Sheets("BA").Range("A10:W" & Sheets("BA").Range("A" & Rows.Count).End(xlUp).Row).ClearContents
a:
    MsgBox ("Khong co sheet BA")
End Sub
Chủ Topic không có File nên không biết dữ liệu trên dòng tiêu đề nó là cái gì? Vậy dùng thử cái này:
Mã:
Sub Xoa()
    Sheets("BA").UsedRange.Offset(10).ClearContents
End Sub
 
Lần chỉnh sửa cuối:

Thong Hoang Tien 250691

Thành viên hoạt động
Tham gia ngày
14 Tháng năm 2017
Bài viết
141
Được thích
125
Điểm
180
Tuổi
28
Nơi ở
Tiên Du - Bắc Ninh
Chủ Topic không có File nên không biết dữ liệu trên dòng tiêu đề nó là cái gì? Vậy dùng thử cái này:
Mã:
Sub Xoa()
    Sheets("BA").UsedRange.Offset(10).ClearContents
End Sub
Nếu vậy thì UsedRange vượt quá cột W thì nó cũng sẽ xóa đúng không ạ ? chủ thớt có nêu rõ chỉ xóa trong vùng A10:W chứ dữ lieu ngoài W sẽ không xóa
 
Top Bottom