• Thứ Tư, 18/03/2009 10:52 (GMT+7)

    Hàm EmtyClipboard() không xóa được clipboard

    Câu hỏi :

    Hàm EmtyClipboard() không xóa được clipboard



    Trả lời :
    Tôi dùng hàm EmptyClipboard() trong Excel nhưng không xóa được clipboard như mong muốn, đoạn code như sau:
     Private Declare Function EmptyClipboard Lib user32.dll () As Long
     Sub Macro1()
     'Macro1 Macro
     'Macro recorded 23-06-2008 by Ngoc Trung
     Range(A5).select
     ActiveCell.FormulaR1C1 = c?ng hòa
     Range(A5).select
     selection.Copy
     Range(A8).select
     ActiveSheet.Paste
     Application.CutCopyMode = False
     EmptyClipboard
     End Sub
     Xin hướng dẫn.

     Hàm API Windows tên là EmptyClipboard() sẽ xóa nội dung hiện hành của clipboard. Để hàm này thực hiện thành công chức năng của mình, bạn cần gọi hàm OpenClipboard() để mở Clipboard trước, sau khi xóa clipboard, bạn cũng nên gọi hàm CloseClipboard() để đóng clipboard lại. Cụ thể, chúng tôi đã kiểm tra đoạn code VBA của bạn, nó bị lỗi cú pháp ở nhiều dòng lệnh. Nếu sửa lại thành đoạn code sau đây, nó sẽ xóa được nội dung trong clipboard.
     'khai báo các hàm API cần gọi
     Private Declare Function EmptyClipboard Lib "user32" () As Long
     Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
     Private Declare Function CloseClipboard Lib "user32" () As Long
     Sub Macro1()
     'Macro1 Macro
     'Macro recorded 23-06-2008 by Ngoc Trung
     Range("A5").Select
     ActiveCell.FormulaR1C1 = "cộng hòa"
     Range("A5").Select
     Selection.Copy
     Range("A8").Select
     ActiveSheet.Paste
     'không cần lệnh sau
     'Application.CutCopyMode = False
     ' mở clipboard
     kq = OpenClipboard(0)
     'xóa nội dung clipboard
     kq = EmptyClipboard
     'đóng clipboard
     kq = CloseClipboard
     End Sub
     
    Chuyên mục: Ứng dụng văn phòng