2011-03-08 97 views
2

HI粘貼特殊,VBA代碼,只允許在Excel模板

我利用具有不同的公式和格式列的Excel模板,我不想被替換這些格式時,我粘貼從另一個東西Excel表格。

任何人都可以提供我,只需要一個VBA代碼,我將粘貼在VBA編輯器中,並且在我的Excel模板中的所有粘貼操作都將是粘貼特殊?

回答

3

您應該嘗試在工作簿中使用事件。對不起,如果我的翻譯不符合你的Excel,但我有波蘭版的MS Office。但是,如果按下CTRL + F11並在項目窗格中打開VB編輯器,則應該有「Microsoft Excel對象」之類的東西,並且存在與電子表格和工作簿相對應的對象。現在,在的ThisWorkbook地方該代碼將覆蓋CTRL + V,然後運行創建my_function()當按下這個組合鍵碼

Option Explicit 

Private Sub WorkBook_Open() 
    MsgBox "this happens when workbook is opened" 
    Application.OnKey "^v","my_function" 
End Sub 

。鑑於上述功能,您現在可以插入新模塊並在其中添加一個子模塊,例如

Option Explicit 

Sub my_function() 
    MsgBox "you have pressed ctrl+v" 
    Selection.PasteSpecial Paste:=xlPasteForumlas, Operation:=xlNone, _ 
       SkipBlanks:=False, Transpose:=False 
End Sub 

有關事件的更多信息,請參閱http://www.cpearson.com/excel/Events.aspx

如果上面的代碼不起作用,請檢查Application.EnableEvents的值,並且如果需要在立即窗口中更改它的值。

此外,在Sheet1您可能會嘗試使用更改事件做些事情。使用這個事件你可能會阻止excel改變樣式,雖然第一個解決方案應該更加實施。以下是更改事件的代碼。

Option Explicit 
Private Sub WorkSheet_Change(ByVal Target As Range) 
    MsgBox "the value was changed" 
End Sub 

希望它有幫助。

一些在Excel

+0

上的事件鏈接其實我有這個代碼,正在尋找另一FR way..but感謝名單了很多反正!接受的答案 – 2011-03-15 04:47:19

+0

謝謝你接受答案,但你爲什麼要尋找另一種方式? – 2011-03-15 06:55:54

+0

當我們在工作簿中使用VBA宏時,它總是詢問用戶是否要啓用或禁用宏?我的客戶堅持不使用宏,因爲安全問題..但最後想出了另一種方法,在運行時添加VBA代碼並動態刪除代碼。這有助於我繞開啓用宏彈出和客戶端將開心...... :-) – 2011-03-17 06:40:56