Lỗi Code không hoạt động khi chuyển thành Add-in

Liên hệ QC

Thanh Bình PV

Thành viên hoạt động
Tham gia
30/10/19
Bài viết
151
Được thích
19
Em có tìm hiểu và viết 1 code để gộp các trang có tên theo thứ tự là 1,2,3... vào 1 trang tên là "TONG HOP". Code chạy bình thường khi ở trong Module nhưng khi em xuất sang File Add-in để dùng cho tiện thì lại không hoạt động.
Và em muốn bẫy lỗi cho trang "TONG HOP" như sau:
1. Nếu không có trang "TONG HOP" thì sẽ hiện thông báo "Vui lòng thêm trang 'TONG HOP' !!"
Em cảm ơn ạ.
Mã:
Option Explicit
Sub TONGHOP()
    Dim i As Integer
    Dim j As Integer
    Dim Sh As Worksheet
    Dim ShName As String

    On Error Resume Next
    Sheets("TONG HOP").Range("A6:Z5000").Clear
    For j = 1 To 31
        ShName = CStr(j)
        Set Sh = ThisWorkbook.Worksheets(ShName)
        Sh.Activate
        Range("A6").Select
        Selection.CurrentRegion.Select
        Selection.Offset(5, 0).Resize(Selection.Rows.Count - 5).Select
        Selection.Copy Destination:=Sheets("TONG HOP").Range("A65536").End(xlUp).Offset(1)
    Next j
    Sheets("TONG HOP").Activate
    MsgBox UniConvert("HOAFN THAFNH!!!", "Telex"), vbInformation
End Sub
 

File đính kèm

Em có tìm hiểu và viết 1 code để gộp các trang có tên theo thứ tự là 1,2,3... vào 1 trang tên là "TONG HOP". Code chạy bình thường khi ở trong Module nhưng khi em xuất sang File Add-in để dùng cho tiện thì lại không hoạt động.
Sao bạn không đính kèm add-in để người ta sửa cho?

Nhìn code thì vd. Sub TONGHOP có trong add-in. Lúc đó ThisWorkbook là cái add-in đó. Nó làm gì có sheet TONGHOP.

Tôi hiểu là add-in thao tác trên tập tin đang active. Vậy thì phải là
Mã:
Set Sh = ActiveWorkbook.Worksheets(ShName)
Và em muốn bẫy lỗi cho trang "TONG HOP" như sau:
1. Nếu không có trang "TONG HOP" thì sẽ hiện thông báo "Vui lòng thêm trang 'TONG HOP' !!"
Thay
Mã:
Sheets("TONG HOP").Range("A6:Z5000").Clear
bằng
Mã:
ActiveWorkbook.Sheets("TONG HOP").Range("A6:Z5000").Clear
If Err.Number Then
    MsgBox "Chua co sheet TONGHOP. Hay tao sheet co ten la TONGHOP"
    Exit Sub
End If
On Error GoTo 0
------------
Tôi có thói quen viết tường minh. Mà không cần Activate, Select loạn xạ như thế.
Mã:
Sub TONGHOP()
    Dim j As Long
    Dim rng As Range
    Dim ShName As String
  
    On Error Resume Next
    ActiveWorkbook.Worksheets("TONG HOP").Range("A6:Z5000").Clear
    If Err.Number Then
        MsgBox "Chua co sheet TONGHOP. Hay tao sheet co ten la TONGHOP"
        Exit Sub
    End If
    On Error GoTo 0
    For j = 1 To 4
        ShName = CStr(j)
        Set rng = ActiveWorkbook.Worksheets(ShName).UsedRange
        rng.Offset(5).Resize(rng.Rows.Count - 5).Copy ActiveWorkbook.Worksheets("TONG HOP").Range("A65536").End(xlUp).Offset(1)
    Next j
    ActiveWorkbook.Worksheets("TONG HOP").Activate
    MsgBox UniConvert("HOAFN THAFNH!!!", "Telex"), vbInformation
End Sub
 
Web KT

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

Back
Top Bottom