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

Liên hệ QC

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

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