Viết VBA xoá vùng dữ liệu trong nhiều sheet

Liên hệ QC

jacky_police

Thành viên chính thức
Tham gia
30/7/07
Bài viết
54
Được thích
4
Xin chào AE GPE giờ tôi có nhiều sheet dữ liệu tuy nhiên tôi muốn trước khi dữ liệu được cập nhật mới cho vùng dữ liệu trong các sheet đó phải được xoá đi. VD sheet 2 đến sheet 5 vùng dữ liệu cần xoá như nhau Range(A5:I50)
Vậy nhờ AE viết giùm code để xoá dữ liệu trong các sheet trên với vùng cần xoá (A5:I50).
Xin cảm ơn!
 
Xin chào AE GPE giờ tôi có nhiều sheet dữ liệu tuy nhiên tôi muốn trước khi dữ liệu được cập nhật mới cho vùng dữ liệu trong các sheet đó phải được xoá đi. VD sheet 2 đến sheet 5 vùng dữ liệu cần xoá như nhau Range(A5:I50)
Vậy nhờ AE viết giùm code để xoá dữ liệu trong các sheet trên với vùng cần xoá (A5:I50).
Xin cảm ơn!
Bạn thử xem sao
Mã:
Sub test()
    Dim i As Integer
    For i = 2 To 5
        Worksheets(i).Range("A5:I50").ClearContents
    Next i
End Sub
Lưu ý Code Name của các sheet cần xóa phải từ Sheet2 đến Sheet5
 
Bạn thử xem sao
Mã:
Sub test()
    Dim i As Integer
    For i = 2 To 5
        Worksheets(i).Range("A5:I50").ClearContents
    Next i
End Sub
Lưu ý Code Name của các sheet cần xóa phải từ Sheet2 đến Sheet5
Cảm ơn rất nhiều! Nếu mình muốn chỉ định luôn tên sheet để xoá thì phải làm sao VD: Sheet 1 = A1, ... sheet 5 = A5....
 
Cảm ơn rất nhiều! Nếu mình muốn chỉ định luôn tên sheet để xoá thì phải làm sao VD: Sheet 1 = A1, ... sheet 5 = A5....
Bạn làm như sau:
Mã:
Sub test()
    Dim i As Integer
    For i = 2 To 5
        Sheets(Range("A"&i).Range("A5:I50").ClearContents
    Next i
End Sub
 
Cảm ơn anh đã giúp đỡ! Vậy nếu i là chữ A,B,C,D,E thì sẽ sửa code thế nào ạ? VD: 1A, 1B,...1E hay là 1A, 2A, 1B, 2B,1C,2C...
Chắc mình phải sửa lại code trên 1 chút
Mã:
Sub test()
    Dim i As Integer
    For i = 2 To 5
        Sheets(Range("A" & i)).Range("A5:I50").ClearContents
    Next i
End Sub
Code này đúng cho mọi trường hợp, sẽ xóa dữ liệu Range("A5:I50") của các sheet có tên được liệt kê từ ô A2 đến ô A5 của sheet hiện hành
Nếu bạn chưa hiểu có thể đưa file lên.
 
Chắc mình phải sửa lại code trên 1 chút
Mã:
Sub test()
    Dim i As Integer
    For i = 2 To 5
        Sheets(Range("A" & i)).Range("A5:I50").ClearContents
    Next i
End Sub
Code này đúng cho mọi trường hợp, sẽ xóa dữ liệu Range("A5:I50") của các sheet có tên được liệt kê từ ô A2 đến ô A5 của sheet hiện hành
Nếu bạn chưa hiểu có thể đưa file lên.
Có điều khi copy đoạn code trên vào thì dòng code bị báo đỏ là sao vậy?
Sheets(Range("A" & i)).Range("A5:I50").ClearContents
 
Có điều khi copy đoạn code trên vào thì dòng code bị báo đỏ là sao vậy?
Sheets(Range("A" & i)).Range("A5:I50").ClearContents
sorry bạn, bạn thử lại
Mã:
Sub test()
    Dim i As Integer 
    For i = 2 To 5
        Worksheets(Range("A" & i).Value).Range("A5:I50").ClearContents
    Next i
End Sub
 
Cảm ơn anh đã giúp đỡ! Vậy nếu i là chữ A,B,C,D,E thì sẽ sửa code thế nào ạ? VD: 1A, 1B,...1E hay là 1A, 2A, 1B, 2B,1C,2C...
Mã:
Sub GPE()
   Dim i As Integer, Arr
   Arr=Array("1A","2A","1B","2B")
   For i = 0 To Ubound(Arr)
       Sheets(Arr(i)).Range("A5:I50").ClearContents
   Next i
End Sub
 
sorry bạn, bạn thử lại
Mã:
Sub test()
    Dim i As Integer
    For i = 2 To 5
        Worksheets(Range("A" & i).Value).Range("A5:I50").ClearContents
    Next i
End Sub
Cho hỏi có phải là đoạn code chữ xanh Worksheets(Range("A" & i).Value).Range("A5:I50").ClearContents có nghĩa là vùng dữ liệu trong sheet từ A&i không? cái này tôi tưởng là tên worksheets chứ nhỉ. Trong bài 6 tôi muốn xoá dữ liệu vùng A5:i50 của các sheet có tên là A2,...,A5 chứ không phải là ô trong sheet (nhầm là ô) hoặc là tên 1A, 2A....1C,2C vì đôi khi trong thiết lập tên sheet có thể xoá mất 1 (sheet 4 ) do vậy 5 sheet sẽ là sheet 2,3,5,6 ,7.
Đoạn code đó có thể sửa như vậy được không?
Worksheets.name =("A" & i).Range("A5:I50").ClearContents và nếu i = A to d thì làm thế nào ạ?
 
Cho hỏi có phải là đoạn code chữ xanh Worksheets(Range("A" & i).Value).Range("A5:I50").ClearContents có nghĩa là vùng dữ liệu trong sheet từ A&i không? cái này tôi tưởng là tên worksheets chứ nhỉ. Trong bài 6 tôi muốn xoá dữ liệu vùng A5:i50 của các sheet có tên là A2,...,A5 chứ không phải là ô trong sheet (nhầm là ô) hoặc là tên 1A, 2A....1C,2C vì đôi khi trong thiết lập tên sheet có thể xoá mất 1 (sheet 4 ) do vậy 5 sheet sẽ là sheet 2,3,5,6 ,7.
Đoạn code đó có thể sửa như vậy được không?
Worksheets.name =("A" & i).Range("A5:I50").ClearContents và nếu i = A to d thì làm thế nào ạ?
Bạn xem bài #9 nhé!
 
Xin lỗi mình không xem bài 9 đã hỏi bài 10.
Xin cảm ơn! Tuy nhiên có 1 vấn đề với Array có khoảng 5 sheet nếu như 1 file dữ liệu mà có khoảng 20 sheet thì code sẽ rất dài chắc phải có giải pháp gì chứ?
Ví dụ có thể đặt tên sheet kiểu như: sheet.names like (1*, 2*) thì sẽ gọn gàng hơn.
 
Xin lỗi mình không xem bài 9 đã hỏi bài 10.
Xin cảm ơn! Tuy nhiên có 1 vấn đề với Array có khoảng 5 sheet nếu như 1 file dữ liệu mà có khoảng 20 sheet thì code sẽ rất dài chắc phải có giải pháp gì chứ?
Ví dụ có thể đặt tên sheet kiểu như: sheet.names like (1*, 2*) thì sẽ gọn gàng hơn.
Đọc cả chục bài cứ lòng vòng hoài. Đưa ra đáp án nào cũng phàn nàn...

Túm lại mình muốn như nào thì viết rõ ràng, cụ thể và chi tiết vào file rồi gửi cái file đó lên đây.
 
Xin lỗi mình không xem bài 9 đã hỏi bài 10.
Xin cảm ơn! Tuy nhiên có 1 vấn đề với Array có khoảng 5 sheet nếu như 1 file dữ liệu mà có khoảng 20 sheet thì code sẽ rất dài chắc phải có giải pháp gì chứ?
Ví dụ có thể đặt tên sheet kiểu như: sheet.names like (1*, 2*) thì sẽ gọn gàng hơn.
Đó cũng là 1 cách bạn nhé!
Tuy nhiên,nếu đặt tên theo quy tắc cụ thể thì nên gói gọn trong 1, 2 trường hợp thôi.
Nói chung là tùy cơ ứng biến.
 
Đọc cả chục bài cứ lòng vòng hoài. Đưa ra đáp án nào cũng phàn nàn...

Túm lại mình muốn như nào thì viết rõ ràng, cụ thể và chi tiết vào file rồi gửi cái file đó lên đây.
Mục đích chính là vừa hỏi vừa học mà bạn đôi khi có vấn đề cụ thể đôi khi phải tuỳ cơ ứng biến. Có phải lúc nào cũng ở cùng 1 trường hợp đâu bạn!
Nếu thấy khó quá thì bạn thông cảm!
 
Đó cũng là 1 cách bạn nhé!
Tuy nhiên,nếu đặt tên theo quy tắc cụ thể thì nên gói gọn trong 1, 2 trường hợp thôi.
Nói chung là tùy cơ ứng biến.
Cảm ơn bạn rất nhiều! Bạn rất nhiệt tình giúp mình có thêm 1 chút kiến thức về VBA. Thực ra về code cũng rất ít và đơn giản với các bạn đã biết còn với những người học kiểu ABC như mình nó rất khó khăn.
Thank you!
 
Mục đích chính là vừa hỏi vừa học mà bạn đôi khi có vấn đề cụ thể đôi khi phải tuỳ cơ ứng biến. Có phải lúc nào cũng ở cùng 1 trường hợp đâu bạn!
Thì có bao nhiêu ý tưởng nêu hết ra, bao nhiêu trường hợp cần hỏi liệt kê vào một bảng, hỏi một lần cho bõ.
Nếu thấy khó quá thì bạn thông cảm!
Đang tới chuyên mục vừa hỏi vừa học thì "thông cảm" là dư thừa, tự ái vặt.
 
Lần chỉnh sửa cuối:
Thì có bao nhiêu ý tưởng nêu hết ra, bao nhiêu trường hợp cần hỏi liệt kê vào một bảng, hỏi một lần cho bỏ.

Đang tới chuyên mục vừa hỏi vừa học thì "thông cảm" là dư thừa, tự ái vặt.
Yêu cầu xoá dữ liệu trong các sheet trên với vùng cần xoá (A5:I50) coi như là xóa sạch sành sanh rồi (chỉ chừa lại tiêu đề).

Theo anh thì chơi nhập tất cả trong 1 sheet muốn sửa xóa cái gì thì cũng dễ dàng. cần nội dung gì thì tách sheet hoặc lọc nó ra.

Bài 1 không có File nên đoán mò.
 
Fải thấy rằng tác gia bài đăng thiếu năng động trong học hỏi; Không tự học mà tranh thủ/dựa dẫm/fó thác cho GPE.COM.
Kể ra cũng được nhưng sẽ không nhớ lâu/không hay chưa là tài sản tri thức của mình.
Sau bài #9 mà còn tiếp tục vặn vẹo là không hay;

Nếu chưa xài được mảng (ở #9) thì có thể thông cảm & chuyện sang hàm CHOOSE() trong VBA để chọn lấy những tên trang tính cần xóa;
(Xem ví dụ trong hướng dẫn xài hàm CHOOSE() của Befaint )

Chúc có nhiều những thú vị khi đến với GPE.COM!
 
Xin chào các ACE,

Mình có 1 file về lịch sắp phòng theo tuần và muốn viết code theo các yêu cầu sau:
1636442418328.png
Nhờ các AE xem giúp nha
thanks
 

File đính kèm

  • LỊCH SỬ DỤNG PHÒNG T11.2021 Dự kiến (1).xlsb
    23.8 KB · Đọc: 7
Web KT
Back
Top Bottom