Я относительно новым для УВЫ, поэтому, пожалуйста, быть нежным :)VBA Excel - сохранить ячейку назначения форматирования
Я рассмотрел различные сценарии, которые якобы сохраняют форматирование ячеек таблицы при CtrlʙC,/Ctrl v или копии & паста используется. К сожалению, я не могу представить какие-либо из вариантов, чтобы работать для моих намерений. Полагаю, это может быть связано с тем фактом, что много копируемых данных & копируется из других программ и вставляется в рабочий лист (поэтому копирование и сохранение форматирования программы, из которой он пришел). Все макросы, с которыми я пытался работать со всеми, похоже, пытаются сохранить форматирование при копировании между ячейками/рабочими листами или книгами и не обращаются к формату данных при копировании из другой программы.
Я ищу альтернативный подход. С логической точки зрения, я думаю, что должен быть способ на ctrl v или вставить событие, чтобы скопированные данные были сохранены в виде переменной, лишены ее форматирования и чтобы вставить только исходное значение. Я пробовал играть с пастообразными, но я не уверен, как заставить пастообразную (или заменить пасту пастообразной).
Вот пример кода, но он не работает для меня. Я получаю:
не может запустить макрос «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