Я работаю над программным обеспечением, которое оценивает умение пользователя в Excel. Таким образом, пользователь выполняет некоторую операцию в Excel, как задано в серии вопросов, , и моя задача - запрограммировать что-то, чтобы проверить, что сделал пользователь, используя Excel COM Object.
Я могу проверить, например: Формат ячейки, ориентация ячеек, область печати, тип шрифта, объединенные ячейки и т. Д. Но я изо всех сил пытаюсь проверить операцию «Вставить специальные». У меня есть крючок с событием Change рабочего листа и самой рабочей таблицы. Поэтому я могу поймать, какой keyStroke пользователь сделал, и фактический формат ячейки. Но я не могу найти способ узнать, пользовался ли пользователь «Только форматом - специальная вставка». Кто-нибудь может мне помочь в этом?Excel Detect PasteSpecial operation
ответ
вы можете обнаружить «Специальная вставка» событие, контролируя список Undo через:
If Application.CommandBars("Standard").Controls("&Undo").List(1) = "Paste Special" Then
Не нужно проверить фактические нажатия клавиш.
К сожалению, он не предлагает никаких дополнительных сведений о том, какой тип специальной пасты был выполнен. Если вам известен диапазон (либо предопределенный, либо через Target
в событии Workbook_SheetChange
), вы можете выполнить отмену (Application.Undo
), сохранить значения ячеек перед пастой, повторить вставку в Target. Если значения изменились, это не было «Только формата - специальная вставка». Надеюсь это поможет.
Спасибо за ваш вход, ваше предложение в сочетании с небольшим сотовым скрытым форматом, таким как Custom Format «0,00E + 00», сделает трюк – Hugo
Убедитесь, что вы отключили обнаружение событий ('Application.EnableEvents = False'), как только рабочий лист событие изменения события, потому что оно будет срабатывать снова, как только ваш сценарий вставляет значения в ячейки. Это вызовет бесконечный цикл. После того, как вы закончите все, что вам нужно, повторно включите обнаружение событий ('Application.EnableEvents = True'). Cheers, – nbayly
На самом деле мой скрипт ничего не вставлял, он просто контролирует, что делает пользователь – Hugo
- 1. Excel VBA PasteSpecial
- 2. win32com Excel PasteSpecial
- 3. Excel Pastespecial VBA
- 4. Excel vba pastespecial не работает
- 5. Excel сбой при использовании PasteSpecial
- 6. Excel VBA PasteSpecial не вставлять последовательно
- 7. Detect formattings в Excel
- 8. Excel и PowerShell - PasteSpecial Отказ С VLOOKUPs
- 9. Excel VBA макросов по методу PasteSpecial
- 10. vba excel: PasteSpecial для JPEG не работает
- 11. Paste vs PasteSpecial
- 12. Detect версии Excel в Delphi
- 13. VBA Pastespecial range
- 14. PasteSpecial не работает
- 15. PasteSpecial (xlPasteValues) дает #VALUE
- 16. Производительность ClearContents и PasteSpecial
- 17. CheckBox Operation in Spreadsheetgear
- 18. pastespecial объектов не удалось vba
- 19. Excel 2010 PasteSpecial метод класса диапазона не удалось
- 20. Excel в PowerPoint VBA PasteSpecial Keep Source Format
- 21. Excel 2016 не будет работать на VBA PasteSpecial
- 22. Ошибка 1004 при использовании PasteSpecial с Transpose
- 23. vb.net «PasteSpecial метод класса Range failed»
- 24. R dataframe rolsise operation
- 25. excel 2010 return: Ошибка выполнения «1004»: «Не удалось выполнить метод PasteSpecial класса диапазона
- 26. VBA: PasteSpecial метод класса Range failed
- 27. Как использовать pastespecial с End (xlUp)
- 28. Скопируйте диапазон excel и вставьте только значения (pasteSpecial) с пробелами в VBScript
- 29. PasteSpecial Метод Range Run Error
- 30. Метод 'PasteSpecial' объекта 'Range' failed
Если вы в состоянии догнать «макрос записи», вы можете записать с ним файл журнала .... но это просто идея, и я не знаю, возможно ли и как это возможно ... –