Code xóa sheet, nhờ các bạn giúp

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

nk_vk

Thành viên mới
Tham gia
24/4/09
Bài viết
10
Được thích
0
Mình muốn nhập số sheet cần xóa và chương trình tự động xóa số sheet đã nhập vào tính từ sheet cuối cùng trở lại. Nhờ các bạn sửa giúp :

Sub Xoa_sheet()
Dim i As Long
Dim j As Long
Dim z As Long
Dim so
With Application
.DisplayAlerts = False
End With
so = InputBox("B¹n h·y nhËp sè sheet cÇn xo¸:", "Chuong trinh quan ly gia", 10)
j = Sheets.Count - so
z = Sheets.Count
For i = j To z
Worksheets(i).Delete
Next
With Application
.DisplayAlerts = True
End With
End Sub

Mọi người thông cảm vì dốt quá thành ra cứ phải hỏi nhiều.
 
Lần chỉnh sửa cuối:
Mình muốn nhập số sheet cần xóa và chương trình tự động xóa số sheet đã nhập vào tính từ sheet cuối cùng trở lại. Nhờ các bạn sửa giúp :

Sub Xoa_sheet()
Dim i As Long
Dim j As Long
Dim z As Long
Dim so
With Application
.DisplayAlerts = False
End With
so = InputBox("B¹n h·y nhËp sè sheet cÇn xo¸:", "Chuong trinh quan ly gia", 10)
j = Sheets.Count - so
z = Sheets.Count
For i = j To z
Worksheets(i).Delete
Next
With Application
.DisplayAlerts = True
End With
End Sub

Mọi người thông cảm vì dốt quá thành ra cứ phải hỏi nhiều.
Đâu cần dùng vòng lặp đâu bạn. Cũng đâu cần phải dùng đến 4 biến như vậy.
Mình cũng là nghiệp dư thôi. Nhưng mà Code này xài được.
PHP:
Sub Xoa_sheet()
Dim sh As Integer
sh = InputBox("B¹n h·y nhËp sè sheet cÇn xo¸:", "Chuong trinh quan ly gia")
Application.DisplayAlerts = False
Sheets(sh).Delete
Application.DisplayAlerts = True
End Sub
Nhưng mà sao bạn không dựa vào tên sheet mà lại dựa vào STT của sheet như vậy, nếu quá nhiều sheet thì làm sao mà bạn nhập chính xác STT của sheet cần xóa được?
Nếu muốn dựa vào tên sheet để xóa thì bạn sửa lại. Khai báo biến kiểu chuỗi:
Thay Dim sh As Integer bằng Dim sh As String
 
Upvote 0
Đâu cần dùng vòng lặp đâu bạn. Cũng đâu cần phải dùng đến 4 biến như vậy.
Mình cũng là nghiệp dư thôi. Nhưng mà Code này xài được.
PHP:
Sub Xoa_sheet()
Dim sh As Integer
sh = InputBox("B¹n h·y nhËp sè sheet cÇn xo¸:", "Chuong trinh quan ly gia")
Application.DisplayAlerts = False
Sheets(sh).Delete
Application.DisplayAlerts = True
End Sub
Nhưng mà sao bạn không dựa vào tên sheet mà lại dựa vào STT của sheet như vậy, nếu quá nhiều sheet thì làm sao mà bạn nhập chính xác STT của sheet cần xóa được?
Nếu muốn dựa vào tên sheet để xóa thì bạn sửa lại. Khai báo biến kiểu chuỗi:
Thay Dim sh As Integer bằng Dim sh As String
Cái này sai à nha!
Tác giả cần là:
- Nhập số lượng sheet cần xóa vào InputBox
- Code sẽ xóa từ sheet cuối trở lại... đến khi nào đủ số lượng thì... ngừng
----------------
Và đúng như bạn nhận xét: Cả 1 đóng biến chả biết để làm gì... nhiều lắm cũng chừng 2 biến là cùng
Như vầy đây:
PHP:
Sub Xoa_sheet()
  Dim i As Long, So As Long
  With Application
    .DisplayAlerts = False
    So = Application.InputBox("B¹n h·y nhËp sè sheet cÇn xo¸:", "Chuong trinh quan ly gia", 10)
    For i = Sheets.Count To Sheets.Count - So + 1 Step -1
      Worksheets(i).Delete
    Next
   .DisplayAlerts = True
  End With
End Sub
Mấu chốt vấn đề nằm ở chổ bạn đếm sai, lý ra phải đếm từ j + 1 trở đi và phải xóa ngược từ cuối lên đầu
Cái này vẩn chưa bẩy lổi: Nếu ta nhập vào 1 số lớn hơn số lượng sheet đang có thì sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi vẫn băn khoăn 1 việc:
- Để xóa nhiều sheet như yêu cầu ở trên... và nếu làm bằng tay thì tôi sẽ chọn sheet cuối, bấm phím Shift rồi chọn sheet đầu, click chuột phải vào Sheet tab, chọn Delete là xong (khoảng cách giữa sheet cuối và đầu là số lượng sheet cần xóa)
===> Vậy nếu viết code để làm điều này thì viết thế nào nhỉ? ---> Ý tôi muốn nói đến việc không dùng vòng lập!
 
Upvote 0
Tôi vẫn băn khoăn 1 việc:
- Để xóa nhiều sheet như yêu cầu ở trên... và nếu làm bằng tay thì tôi sẽ chọn sheet cuối, bấm phím Shift rồi chọn sheet đầu, click chuột phải vào Sheet tab, chọn Delete là xong (khoảng cách giữa sheet cuối và đầu là số lượng sheet cần xóa)
===> Vậy nếu viết code để làm điều này thì viết thế nào nhỉ? ---> Ý tôi muốn nói đến việc không dùng vòng lập!
Bạn xem bài này nhé.
Xóa nhiều sheet thì nên Group các sheets lại rồi xóa 1 lần thôi, chương trình sẽ nhanh hơn nhiều.
 
Upvote 0
Web KT

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

Back
Top Bottom