Xoá sheet lỗi bằng code VBA

Liên hệ QC

Bài học đắt giá

Thành viên mới
Tham gia
2/12/13
Bài viết
22
Được thích
1
Chào mọi người, mình có sử dụng dòng code dưới đây để chuyển tháng tự động khi sang sheet mới. Khi mình khai báo tháng mới bị trùng với tháng trước đó hoặc bị lỗi thì sheet lỗi đó vẫn hiện ra với nội dung của sheet trước đó. Anh chị em giúp mình viết thêm đoạn code để khi bị lỗi sẽ báo lỗi và không hiện ra sheet lỗi đó nữa. Cảm ơn mọi người nhiều.
1.pngUntitled.png

Sub ThangTiepTheo()
Dim TensheetMoi As String, ThangTruoc As Date
ThangTruoc = Range("B4").Value

TensheetMoi = InputBox("Nhap Thang Tiep Theo")
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = TensheetMoi
With Sheets(TensheetMoi)
.Range("C14:BL35").ClearContents
.Range("B4").Value = WorksheetFunction.EoMonth(ThangTruoc, 0) + 1
End With
End Sub
 

File đính kèm

Bạn sửa lại như sau:
Rich (BB code):
Sub ThangTiepTheo()
    Dim TensheetMoi As String, ThangTruoc As Date
    ThangTruoc = Range("B4").Value
    
    TensheetMoi = InputBox("Nhap Thang Tiep Theo")
    If TypeName(Evaluate("'" & TensheetMoi & "'!A1")) = "Error" Then
        ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
        Worksheets(Worksheets.Count).Name = TensheetMoi
        With Sheets(TensheetMoi)
            .Range("C14:BL35").ClearContents
            .Range("B4").Value = WorksheetFunction.EoMonth(ThangTruoc, 0) + 1
        End With
    Else
        MsgBox "Sheet '" & TensheetMoi & "' da ton tai."
    End If
End Sub
 
Chào mọi người, mình có sử dụng dòng code dưới đây để chuyển tháng tự động khi sang sheet mới. Khi mình khai báo tháng mới bị trùng với tháng trước đó hoặc bị lỗi thì sheet lỗi đó vẫn hiện ra với nội dung của sheet trước đó. Anh chị em giúp mình viết thêm đoạn code để khi bị lỗi sẽ báo lỗi và không hiện ra sheet lỗi đó nữa. Cảm ơn mọi người nhiều.
View attachment 269995View attachment 269997

Sub ThangTiepTheo()
Dim TensheetMoi As String, ThangTruoc As Date
ThangTruoc = Range("B4").Value

TensheetMoi = InputBox("Nhap Thang Tiep Theo")
ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = TensheetMoi
With Sheets(TensheetMoi)
.Range("C14:BL35").ClearContents
.Range("B4").Value = WorksheetFunction.EoMonth(ThangTruoc, 0) + 1
End With
End Sub
Điều kiện của tên Sheet là:
- Tối đa có 31 ký tự
- Không chứa 1 trong các ký tự : \ / ? * [ ]
- Không được bỏ trống
- Không được trùng tên với Sheet hiện có

Như vậy tôi hiểu rằng, bạn cần làm là:
- Xác định tên các Sheet hiện có
- Khi nhập vào InputBox, cần thủ tục kiểm tra các điều kiện ở trên, nếu đạt toàn bộ thì mới Add thêm Sheet mới.
 
Chủ bài đăng thử cách này xem sao:
Tên loại trang tính này có độ đài luôn bằng 2 (& các trang khác loại sẽ phải có độ dài khác 2)
Thêm nữa: chữ cái đầu chỉ năm, ví dụ A là 2020, B là 2021,. . . .
Chữ cái còn lại chì tháng, ví dụ C9 là tháng 9 năm 2023 & các tháng tiếp theo sẽ phải là CA, CB & CC
Nếu ta xài trật tự này có khi khỏi cần macro nào cũng OK (?)
 
Web KT

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

Back
Top Bottom