2015-12-02 106 views
0

我正在研究評估用戶在Excel上的技能的軟件。 因此,用戶可以在Excel中執行一些操作,正如一系列問題 中提到的那樣,我的工作是使用Excel COM Object對某些內容進行編程以驗證用戶已完成的操作。
我可以驗證的東西,如;單元格格式,單元格方向,打印區域,字體類型,合併單元格等。但我正在努力驗證「粘貼特殊」操作。 我有一個WorkSheet的Change事件和WorkSheet本身的鉤子。所以我可以捕捉到用戶所做的keyStroke以及單元格的實際格式。 但我無法找到一種方式來判斷用戶是否使用了「僅格式 - 特殊粘貼」。有沒有人可以幫助我呢?Excel檢測粘貼特殊操作

+0

如果你能趕上「記錄宏」,你可以寫一個日誌文件....但這只是一個想法,我不知道是否以及如何可能... –

回答

1

您可以通過監控撤消列表檢測「選擇性粘貼」事件:

If Application.CommandBars("Standard").Controls("&Undo").List(1) = "Paste Special" Then 

不需要檢查的實際按鍵。

可悲的是,它沒有提供什麼類型的粘貼特殊執行的任何進一步的細節。如果知道範圍(預定義或通過Workbook_SheetChange事件中的Target),則可以執行撤消操作(Application.Undo),在粘貼之前存儲單元格值,然後在目標上重新粘貼粘貼。如果值已更改,則不是「僅格式 - 特殊粘貼」。希望這可以幫助。

+0

謝謝你的輸入,你的建議結合一些小單元格隱藏的格式,如自定義格式「0,00E + 00」,將會訣竅 – Hugo

+0

確保在工作表儘快關閉事件檢測('Application.EnableEvents = False')更改事件觸發器,因爲只要腳本將值粘貼到單元格,它就會再次觸發。這將導致無限循環。完成所有需要的操作後,重新啓用事件檢測('Application.EnableEvents = True')。乾杯, – nbayly

+0

其實我的腳本沒有粘貼任何東西,它只是監視用戶在做什麼 – Hugo