我是比较新的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