我是比較新的VBA,所以請溫柔:)VBA擅長 - 保存目的地單元格格
我已審查據稱保存在電子表格時CTRL C/CTRL V或複製單元格的格式各種腳本正在使用粘貼&。不幸的是,我似乎無法得到任何變化來爲我的意圖工作。我想這可能是由於粘貼的&拷貝的許多數據正在從其他程序複製並粘貼到工作表中(因此複製並保留它所來自的程序的格式)。我嘗試使用的所有宏似乎都試圖在單元格/工作表或工作簿之間進行復制時保留格式,並且在從另一個程序複製時不解決數據格式問題。
我正在尋找替代方法。從邏輯的角度來看,我認爲在ctrl v或粘貼事件上應該有一種方法,將複製的數據存儲爲變量,並將其格式化並僅粘貼原始值。我嘗試過使用pastespecial,但我不確定如何強制使用pastespecial(或用pastespecial替換paste)。
這是一些代碼示例,但它似乎並不適合我。我不斷收到:
無法運行宏「C:‘!MyPaste’...... Test.xlsm宏可能無法在此工作簿或提供所有宏可能會被禁用
宏肯定,並啓用代碼粘貼到[的ThisWorkbook(代碼)]
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim UndoList As String
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error GoTo Whoa
'~~> Get the undo List to capture the last action performed by user
UndoList = Application.CommandBars("Standard").Controls("&Undo").List(1)
'~~> Check if the last action was not a paste nor an autofill
If Left(UndoList, 5) <> "Paste" And UndoList <> "Auto Fill" Then GoTo LetsContinue
'~~> Undo the paste that the user did but we are not clearing the clipboard
'~~> so the copied data is still in memory
Application.Undo
If UndoList = "Auto Fill" Then Selection.Copy
'~~> Do a pastespecial to preserve formats
On Error Resume Next
'~~> Handle text data copied from a website
Target.Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
Target.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
On Error GoTo 0
'~~> Retain selection of the pasted data
Union(Target, Selection).Select
LetsContinue:
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
錯誤信息中提到的宏MyPaste是什麼/哪裏? –
ActiveSheet.PasteSpecial xlPasteValues –
我仍然無法得到這個工作:( – user2292941