Xoá nhiều sheet hơn 8 bị lỗi 'runtime eror 9' (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Gavancon

Thành viên mới
Tham gia
27/10/12
Bài viết
3
Được thích
0
Nhờ các anh chị giúp dùm khi xoá nhiều hơn 8 sheet thấy báo lỗi 'runtime eror 9'.
Xin cảm ơn
PHP:
Application.DisplayAlerts = False

Sheetcount = Sheets.Count

MsgBox ("Xoa tat ca cac sheet truoc, tru sheet cuoi cung : " & Sheetcount)


For i = 1 To Sheetcount - 1

Sheets(i).Delete

Next
 

File đính kèm

Nhờ các anh chị giúp dùm khi xoá nhiều hơn 8 sheet thấy báo lỗi 'runtime eror 9'.
Xin cảm ơn
PHP:
Application.DisplayAlerts = False

Sheetcount = Sheets.Count

MsgBox ("Xoa tat ca cac sheet truoc, tru sheet cuoi cung : " & Sheetcount)


For i = 1 To Sheetcount - 1

Sheets(i).Delete

Next
Sửa lại chút thế này
PHP:
Sub Macro1()
On Error ReSume Next
Dim sh, sheetcount
Application.DisplayAlerts = False
sheetcount = Sheets.Count
If sheetcount = 1 Then Exit Sub
MsgBox ("Xoa tat ca cac sheet truoc, giu lai sheet cuoi cung: " & sheetcount)
For Each sh In Worksheets
   If sh.CodeName <> "Sheet" & sheetcount Then
      sh.Delete
   End If
Next
Application.DisplayAlerts = True
End Sub

Tuy nhiên không ai xóa sheet kiểu này, hỏng biết mục đích của bạn là gì nên không thể code chính xác
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn chú ý đoạn
Mã:
[COLOR=#0000BB][FONT=monospace]Sheets[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]i[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Delete[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]
[/FONT][/COLOR]

=> sheet(i) là sheet theo thứ tự sắp xếp trong sheetcode (cửa sổ VBA).
Ban đầu có 9 sheet thì sheet(i) có max(i) = 9, xoá 1 sheet => max(i=8) cứ thế lần lượt

Do dó nếu bạn tiếp tục xoá khi không có i thoả mãn sẽ gây lỗi

Bạn có thể sửa lại đoạn for như sau
Mã:
For i = Sheetcount - 1 To 1 Step -1
Hoặc dùng For each
 
Upvote 0
Nhờ các anh chị giúp dùm khi xoá nhiều hơn 8 sheet thấy báo lỗi 'runtime eror 9'.
Xin cảm ơn
PHP:
Application.DisplayAlerts = False

Sheetcount = Sheets.Count

MsgBox ("Xoa tat ca cac sheet truoc, tru sheet cuoi cung : " & Sheetcount)


For i = 1 To Sheetcount - 1

Sheets(i).Delete

Next
không hiểu bạn định làm gì nhưng cũng tham gia góp vui:
Mã:
For i = 1 To Sheetcount - 1
   'MsgBox Sheets(i).Name ' hoặc Sheets(i).CodeName<=== [COLOR=#0000cd]bạn thấy lỗi sao không check thử đại loại như thế này[/COLOR]
   [B][COLOR=#000000]Sheets[/COLOR][COLOR=#ff0000](1)[/COLOR][COLOR=#000000].Delete[/COLOR][/B]
Next i
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ các anh chị giúp dùm khi xoá nhiều hơn 8 sheet thấy báo lỗi 'runtime eror 9'.
Xin cảm ơn
PHP:
Application.DisplayAlerts = False

Sheetcount = Sheets.Count

MsgBox ("Xoa tat ca cac sheet truoc, tru sheet cuoi cung : " & Sheetcount)


For i = 1 To Sheetcount - 1

Sheets(i).Delete

Next
[GPECODE=vb]Sub test()
Dim nName as Name
On Error Resume Next
Sheets(Sheets.Count).Copy
With ActiveWorkbook
With .Sheets(1)
.DrawingObjects.Delete
.UsedRange.Value = .UsedRange.Value
For Each nName In .Names: nName.Delete: Next nName
End With
.VBProject.VBComponents(.CodeName).CodeModule.DeleteLines 1, .CountOfLines
.SaveAs Filename:=ThisWorkbook.Path & "\" & .Sheets(1).Name, FileFormat:=xlExcel8
.Close
End With
'Kill ThisWorkbook.FullName ' Đang bị lỗi/ không thực hiện được dòng này, xin hỏi tại sao ???

End Sub
[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
[GPECODE=vb]Sub test()
Dim nName as Name
On Error Resume Next
Sheets(Sheets.Count).Copy
With ActiveWorkbook
With .Sheets(1)
.DrawingObjects.Delete
.UsedRange.Value = .UsedRange.Value
For Each nName In .Names: nName.Delete: Next nName
End With
.VBProject.VBComponents(.CodeName).CodeModule.DeleteLines 1, .CountOfLines
.SaveAs Filename:=ThisWorkbook.Path & "\" & .Sheets(1).Name, FileFormat:=xlExcel8
.Close
End With
Application.DisplayAlerts = False
ThisWorkbook.ChangeFileAccess xlReadOnly
Kill ThisWorkbook.FullName
ThisWorkbook.Close False

Application.DisplayAlerts = True
'Kill ThisWorkbook.FullName ' Đang bị lỗi/ không thực hiện được dòng này, xin hỏi tại sao ???

End Sub
[/GPECODE]
Thêm cái xanh xanh vào coi
 
Upvote 0
[GPECODE=vb]Application.DisplayAlerts = False
With ThisWorkbook
.ChangeFileAccess xlReadOnly
Kill .FullName
.Close False
End With
Application.DisplayAlerts = True
[/GPECODE]
Tks bạn quanghai1969 , đã hiểu vấn đề.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom