application cutcopymode false что значит
Свойство Application.CutCopyMode (Excel)
Возвращает или задает состояние режима Cut или Copy. Может быть True, False или константа XLCutCopyMode, как показано в следующих таблицах. Для чтения и записи, Long.
Синтаксис
выражения. CutCopyMode
выражение: переменная, представляющая объект Application.
Примечания
Возвращаемое значение | Описание |
---|---|
False | Не в режиме Cut или Copy. |
xlCopy | В режиме Копирование. |
xlCut | В режиме Cut. |
Заочная величина | Описание |
---|---|
False | Отменяет режим Cut или Copy и удаляет движущиеся границы. |
True | Запускает режим Cut или Copy и показывает движущиеся границы. |
Пример
В этом примере используется поле сообщений для отображения состояния режима Cut или Copy.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Open Notes
Обо всём, что мне интересно
Полезные команды VBA
Пополняемый список полезных отрывков кода VBA для выполнения часто востребованных действий в MS Excel.
Служебные команды для ускорения скорости выполнения макроса:
‘Отключение отображения выполняемых действий Application.ScreenUpdating = False ‘Предотвращение появления предупреждающих сообщений Application.DisplayAlerts = False ‘Предотвращение появления предупреждения об обновлении связей данных Application.AskToUpdateLinks = False ‘Очистка буфера обмена Application.CutCopyMode = False
Проверка имени пользователя, запустившего макрос:
Чтобы проверить, какой пользователь открыл книгу Excel можно использовать один из следующих вариантов:
Поиск последней строки таблицы:
Замена формулы на значение:
Добавление нового листа с именем после всех существующих:
Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = «Имя_листа»
Как узнать последний день предыдущего месяца:
Определение оставшихся дней месяца:
Номер текущего дня в неделе (воскресенье — первый день):
DayOfWeek = DatePart(«w», dToday)
Создание нового файла из текущего:
pathNewBook = «C:\Temp» nameNewBook = «Имя_нового_файла.xls» Workbooks.Add ActiveWorkbook.SaveAs Filename:=pathNewBook & nameNewBook ActiveWorkbook.Close True
Сохранить текущий файл в формате CSV
Чтобы при сохранении файла в формате CSV, вместо запятых в качестве разделителя использовалась точка с запятой, следует использовать подобный код:
ActiveWorkbook.SaveAs FileName:=»Name.csv», FileFormat:=xlCSV, _ CreateBackup:=False, Local:=True ActiveWorkbook.Saved = True ActiveWorkbook.Close True
Копирование данных из одного файла в другой:
wbPath = «C:\Temp\» wbName = «Имя_файла_откуда_копируем.xls» Workbooks.Open (wbPath & wbName) Set WB = Workbooks(wbName) WB.Sheets(«Лист 1»).Range(«A1:С10»).Copy Sheet(«Лист_в_текущем_файле»).Range(«A2»).PasteSpecial xlPasteValues
Чтобы открыть файл только для чтения, следует использовать:
Workbooks.Open (Filename:=wbPath & wbName, ReadOnly:=True)
Предотвращение ошибки при неудачном поиске значения в таблице:
Set DateRowObj = WB.Sheets(«Имя_листа»).Range(«A:A»)._ Find(What:=dtToAsDate, LookIn:=xlFormulas) If (DateRowObj Is Nothing) Then WB.Close False MsgBox «Данные не найдены.» Else DateRow = DateRowObj.Row ‘Номер строки с искомым значением End If
Проверка существования файла:
fPath = «C:\Temp\» fName = «Файл.txt» If Dir(fPath & fName) = «» Then MsgBox «Файл не найден:» & Chr(13) & fPath & fName Exit Sub End If
Кнопка, скрывающая/разворачивающая часть таблицы:
Private Sub tbVid_Click() Application.ScreenUpdating = False If tbVid Then tbVid.Caption = «Скрыть» ActiveSheet.Rows(«2:29»).Hidden = False Else tbVid.Caption = «Развернуть» ActiveSheet.Rows(«2:29»).Hidden = True End If End Sub
Обновление сводной таблицы:
currPath = ThisWorkbook.Path currWBName = ThisWorkbook.Name ListName.PivotTables(«СводнаяТаблица1»).ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=currPath & «[» & _ currWBName & «]Лист1!R1C1:R10C5»)
Обращение к элементам Frame:
Замена #ДЕЛ/0! в диапазоне:
Selection.Replace What:=»#DIV/0!», Replacement:=»», LookAt:=xlPart,_ SearchOrder:=xlByRows, MatchCase:=False,_ SearchFormat:=False, ReplaceFormat:=False
Количество строк в отфильтрованной таблице:
Быстро убрать лишние пробелы в диапазоне:
Программно снять защиту с листа:
Работа с диапазоном
Умножить диапазон на число:
ThisWorkbook.Sheets(1).Range(«A1:A10») = _ ThisWorkbook.Sheets(1).Evaluate(«A1:A10» & «*80»)
Добавить ко всем значениям диапазона строку:
ThisWorkbook.Range(«A1:A10»).Value = _ Evaluate(«=»»» & addTxt & «»» & » & ThisWorkbook.Range(«A1:A10»).Address)
Сортировка выбранного столбца в сводной таблице
Application.CutCopyMode = False
If you use copy and paste while recording a Macro, you will see the code which refers to Application.CutCopyMode = False. You may wonder why it’s there?
The recorded code looks a bit like this:
If you use VBA to copy and paste without that line of code, it still works fine. So, does it serve any purpose? And is there a better option?
What is Application.CutCopyMode = False for?
In Excel, when we copy or cut a range of cells, the content is temporarily stored in Excel’s clipboard. This is when the animated dotted line appears and moves around the outside of the range; commonly referred to as the ‘marching ants’.
Look at the screenshot below; the marching ants show that we are in cut or copy mode, with cells A1 to C4 stored in the clipboard. The message in the status bar also changes to indicate which mode we are in.
Having copied a cell range, we can now (1) paste the copied content from the clipboard, or (2) Perform any other action to leave the cut/copy mode. Pressing the Esc key will remove CutCopyMode without needing to perform an action on the worksheet.
After using Application.CutCopyMode = False, it is no longer possible to paste from the clipboard using VBA. Trying to do so results in an error.
If we are in cut/copy mode and more than 101 cells have been selected, closing the workbook will result in the following warning message.
Therefore, resetting the CutCopyMode before closing a workbook will prevent this warning message from appearing.
What about CutCopyMode = True?
Logically, you might think Application.CutCopyMode = True would turn on the marching ants, but it doesn’t. Microsoft’s own documentation indicates it should, but I’ve never made this work, or seen others use it.
When pasting cells, Excel reads the CutCopyMode status to know whether it should cut or copy.
The following VBA will determine which mode Excel is in:
Do you know the fastest way to learn foreign languages? It is to read, write, speak, and think in that language as often as possible. Apart from speaking, programming languages are no different. The more you immerse yourself in that language, the faster you will pick it up.
Should you use CutCopyMode = False?
If we are writing VBA code from scratch, it may not be necessary to use CutCopyMode at all. Not because it is bad code, but because there are better ways to copy and paste which don’t use Excel’s clipboard, making it faster to execute.
Setting Values
We can paste values using the Value property of the range object. The following code places the values from cells B1 to B20 into cells A1 to A20.
Copy with Destination
If we wish to copy and paste more than just values, we can use the destination argument of the copy method,
It is not necessary to define the full range of the destination; we can just reference the first cell. Excel knows how many cells we have copied and will adjust the paste range accordingly.
Conclusion
Ultimately, the decision of whether to use Application.CutCopyMode = False comes down to this: if at the end of executing the macro, the marching ants are visible, and you don’t want them to be, then use it, otherwise don’t worry about it.
Get our FREE VBA eBook of the 30 most useful Excel VBA macros.
Automate Excel so that you can save time and stop doing the jobs a trained monkey could do.
By entering your email address you agree to receive emails from Excel Off The Grid. We’ll respect your privacy and you can unsubscribe at any time.
Don’t forget:
If you’ve found this post useful, or if you have a better approach, then please leave a comment below.
Do you need help adapting this to your needs?
I’m guessing the examples in this post didn’t exactly meet your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site) you should be able to adapt it to your needs.
What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid. Check out the latest posts:
Что именно является функцией приложения.Свойство CutCopyMode в Excel
Ну, прежде всего, я нашел пару ответов во время гугления, но большинство форумов заблокированы в моем Office Network следовательно, задавая этот вопрос здесь! Еще одно намерение-получить ответ на простом английском языке :Р
Я понимаю, если мы ставим Application.CutCopyMode = False тогда скопированные / вырезанные результаты исчезнут (т. е. память будет очищена), но когда мы должны использовать это и когда не использовать это? Кто-нибудь может помочь?
3 ответов
с оптимизированным кодом VBA вы обычно можете выполнять операции копирования/вырезания и вставки в одном операторе, поэтому буфер обмена не используется и Application.CutCopyMode = False не нужна и вы не получите предупреждение.
обычно, когда вы копируете ячейку, вы найдете приведенную ниже инструкцию, записанную в строке состояния (в нижней части листа)
«выберите пункт назначения и нажмите Enter или выберите Вставить»
затем нажмите Enter или выберите Вставить, чтобы вставить значение ячейки.
Если вы не нажмете Esc после этого, вы сможете вставить значение ячейки несколько раз
приложение.CutCopyMode = False делает то же самое, что и кнопка Esc, если вы удалили ее из своего кода, Вы обнаружите, что можете вставить значение ячейки несколько раз снова.
и если вы закрыли Excel без нажатия Esc вы получите предупреждение » существует большой объем информации в буфере обмена. ‘
Что такое функция свойства Application.CutCopyMode в Excel?
Application.CutCopyMode=False отображается в сгенерированном макрокодером коде, когда вы делаете копии/вырезаете ячейки и вставляете их. Макро-рекордер выполняет копирование/вырезание и вставку в отдельные операторы и использует буфер обмена в качестве промежуточного буфера. Я думаю, что Application.CutCopyMode = False очищает буфер обмена. Без этой строки вы получите предупреждение » There is a large amount of information on the Clipboard. ‘ при закрытии книги с большим объемом данных в буфере обмена.
С оптимизированным кодом VBA вы можете обычно выполнять операции копирования/вырезания и вставки в одном из операторов, поэтому буфер обмена не используется, а Application.CutCopyMode = False не требуется, и вы не получите предупреждение.
Обычно, когда вы копируете ячейку, вы найдете приведенный ниже оператор, записанный в строке состояния (в нижней части листа).
«Выберите пункт назначения и нажмите Enter или выберите» Вставить «
Затем нажмите «Enter» или «Вставить», чтобы вставить значение ячейки.
Если вы не нажали Esc после этого, вы сможете вставить значение ячейки несколько раз
Application.CutCopyMode = False делает то же самое, что и кнопка Esc, если вы удалили ее из своего кода, вы обнаружите, что сможете снова вставить значение ячейки.
И если вы закрыли Excel без нажатия Esc
вы получите предупреждение «В буфере обмена имеется большой объем информации. «