Приветствую всех!
Предыстория вопроса. Писал обработку двойного клика, чтобы вставить в целевую ячейку только значение скопированной ячейки. И, как всегда, я подумал о нежелательной ситуации.
Допустим дрогнула рука и я скопировал не одну ячейку, а несколько и не заметил этого. Тогда по событию:
будет заполнена значениями скопированного не одна ячейка, а диапазон размером аналогичный скопированному диапазону и отменить это действо нельзя будет.
Отсюда вопрос, как узнать сколько ячеек скопировано без вставки их на лист?
Конечно можно перестраховаться таким подходом:
но желательно получить ответ на свой вопрос.
Всем спасибо.
Предыстория вопроса. Писал обработку двойного клика, чтобы вставить в целевую ячейку только значение скопированной ячейки. И, как всегда, я подумал о нежелательной ситуации.
Допустим дрогнула рука и я скопировал не одну ячейку, а несколько и не заметил этого. Тогда по событию:
Код |
---|
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Application.CutCopyMode = xlCopy Then Target.PasteSpecial xlPasteValues: Cancel = True End Sub |
Отсюда вопрос, как узнать сколько ячеек скопировано без вставки их на лист?
Конечно можно перестраховаться таким подходом:
Код |
---|
Option Explicit Function ClipboardText() ' чтение из буфера обмена ' source: http://excelvba.ru/code/clipboard With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .GetFromClipboard ClipboardText = .GetText End With End Function Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Application.CutCopyMode = xlCopy Then Target.Value = ClipboardText: Cancel = True End Sub |
Всем спасибо.