Code VBA chạy bình thường nhưng khi gán Application.onkey thì không chạy đúng

Liên hệ QC

khongnhienttt

Thành viên hoạt động
Tham gia
15/7/15
Bài viết
137
Được thích
33
Mình Có viết 1 sub để tổng hợp dữ liệu từ nhiều file vào 1 file, từ trình soạn code mình bấm F5 hoặc từ bảng tính Excel mình bấm ALT+F8 chọn sub để chạy thì code hoạt động theo ý mình, tuy nhiên khi mình gán
Mã:
Application.OnKey "^+{T}", "TongHop"
để khi bấm Ctrl + Shift + T để chạy sub TongHop thì code chỉ chạy đến đoạn mở file excel đầu tiên là nó thoát ra
Mã:
Sub TongHop()
    Dim fo As Variant, a As Byte, sh As Worksheet, lr1 As Long, lr2 As Long, ten As String, lc As Long, book1 As Workbook, book2 As Workbook
    fo = Application.GetOpenFilename("Excel files (*.xl*), *.xl*", , , , True)
    If Not IsArray(fo) Then Exit Sub
    Set book2 = ThisWorkbook
    For Each sh In Worksheets
        sh.Range("A2").Resize(65000, 40).ClearContents
    Next sh
    For a = LBound(fo) To UBound(fo)
        Set book1 = Workbooks.Open(fo(a))
        With book1
            For Each sh In .Worksheets
                lc = sh.Range("XDF1").End(1).Column
                lr = sh.Range("A65000").End(3).Row
                ten = sh.Name
                arr = sh.Range(sh.Cells(2, 1), sh.Cells(lr, lc)).Value
                With book2.Worksheets(ten)
                    lr = .Range("A65000").End(3).Row + 1
                    .Range("A" & lr).Resize(UBound(arr), UBound(arr, 2)).Value = arr
                End With
            Next sh
            .Close
        End With
    Next a
End Sub
 
Gõ vào gu gồ:
how to assign keyboard shortcut to macro
Cách gán phím tắt cho macro
mình đã gán: Application.OnKey "^+{T}", "TongHop" lúc workbook khởi động lên rồi, và khi bấm ctrl+shift+T thì code cũng đã chạy nhưng nó chỉ chạy đến Set book1 = Workbooks.Open(fo(a)) thì dừng, tức là nó mới mở cái workbook đầu tiên ra.
Bài đã được tự động gộp:

có 1 điều lạ là nếu mình đổi thành
Mã:
Application.OnKey "^{F10}", "TongHop"
hoặc
Mã:
Application.OnKey "{F10}", "TongHop"
thì lại được, mình vẫn chưa hiểu nguyên nhân do đâu
 
Lần chỉnh sửa cuối:
Upvote 0
Làm theo hình sau:

1627985042004.png
 
Upvote 0
mình đã gán: Application.OnKey "^+{T}", "TongHop" lúc workbook khởi động lên rồi, và khi bấm ctrl+shift+T thì code cũng đã chạy nhưng nó chỉ chạy đến Set book1 = Workbooks.Open(fo(a)) thì dừng, tức là nó mới mở cái workbook đầu tiên ra.
Bài đã được tự động gộp:

có 1 điều lạ là nếu mình đổi thành
Mã:
Application.OnKey "^{F10}", "TongHop"
hoặc
Mã:
Application.OnKey "{F10}", "TongHop"
thì lại được, mình vẫn chưa hiểu nguyên nhân do đâu
1. Thôi thì cho là tổ hợp Ctrl + Shift + T đã gây xung đột với code của Excel, cụ thể thì Ctrl + Shift + T là phím tắt trong Excel với chức năng "Show or hide the total row in a table". Tuy nhiên khi debug bằng F8 thì code chạy từ đầu đầu cuối.

2. Về phím tắt thì nên làm như bài #5. Nhưng không dùng được Ctrl + Shift + T đâu. Kết cục vẫn như trước (On Key ...) thôi. Có thể dùng Ctrl + t
 
Upvote 0
mình cảm ơn, thay tổ hợp khác thì được rồi ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom