Здравствуйте уважаемые колдуны и шаманы!!! Не могу справиться с задачей следующего содержания: - имеется таблица, в которой необходимо перемещать числовые значения в произвольном порядке, в ручную, то бишь, выделяем нужный диапазон с числами и вставляем этот диапазон в любую другую выделенную ячейку, если быть точнее, хочется исключить процедуру копирования и вставки с помощью горячих клавиш, дабы сэкономить себе время. Заранее спасибо!!!
Здравствуйте уважаемые колдуны и шаманы!!! Не могу справиться с задачей следующего содержания: - имеется таблица, в которой необходимо перемещать числовые значения в произвольном порядке, в ручную, то бишь, выделяем нужный диапазон с числами и вставляем этот диапазон в любую другую выделенную ячейку, если быть точнее, хочется исключить процедуру копирования и вставки с помощью горячих клавиш, дабы сэкономить себе время. Заранее спасибо!!!tasdel
Сообщение отредактировал tasdel - Вторник, 19.01.2021, 13:10
Ребята, нашел код чуть его изменил под себя, работает как надо. Убрать бы еще лишние окна (InputBox) и было бы что-то вроде: - "как доктор прописал".
[vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim copyRange As Range, pasteRange As Range
On Error Resume Next Set copyRange = Application.InputBox("Выделите ячейки, которые надо скопировать.", _ "Точное копирование", Default:=Selection.Address, Type:=8)
If copyRange Is Nothing Then Exit Sub
Set pasteRange = Application.InputBox("Теперь выделите диапазон вставки." & vbCrLf & vbCrLf & _ "Диапазон должен быть равен по размеру исходному " & vbCrLf & _ "диапазону копируемых ячеек.", "Точное копирование", _ Default:=Selection.Address, Type:=8)
If pasteRange.Cells.Count <> copyRange.Cells.Count Then MsgBox "Диапазоны копирования и вставки разного размера!", vbExclamation, "Ошибка копирования"
Exit Sub End If
If pasteRange Is Nothing Then Exit Sub Else pasteRange.Value = copyRange.Value
End If Selection.Cells = "" End Sub
[/vba]
Ребята, нашел код чуть его изменил под себя, работает как надо. Убрать бы еще лишние окна (InputBox) и было бы что-то вроде: - "как доктор прописал".
[vba]
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim copyRange As Range, pasteRange As Range
On Error Resume Next Set copyRange = Application.InputBox("Выделите ячейки, которые надо скопировать.", _ "Точное копирование", Default:=Selection.Address, Type:=8)
If copyRange Is Nothing Then Exit Sub
Set pasteRange = Application.InputBox("Теперь выделите диапазон вставки." & vbCrLf & vbCrLf & _ "Диапазон должен быть равен по размеру исходному " & vbCrLf & _ "диапазону копируемых ячеек.", "Точное копирование", _ Default:=Selection.Address, Type:=8)
If pasteRange.Cells.Count <> copyRange.Cells.Count Then MsgBox "Диапазоны копирования и вставки разного размера!", vbExclamation, "Ошибка копирования"
Exit Sub End If
If pasteRange Is Nothing Then Exit Sub Else pasteRange.Value = copyRange.Value
Pelena, К примеру: -Выделил три ячейки с числами - сработал макрос на копирование, далее выделил три любые другие ячейки - сработал макрос на вставку этих же чисел. Намного быстрее, чем Ctrl+C и Ctrl+V, тем более клавиатура иногда может дать сбой. (InputBox) - является как бы посредником, а мне хотелось бы напрямую, без посредника.
Pelena, К примеру: -Выделил три ячейки с числами - сработал макрос на копирование, далее выделил три любые другие ячейки - сработал макрос на вставку этих же чисел. Намного быстрее, чем Ctrl+C и Ctrl+V, тем более клавиатура иногда может дать сбой. (InputBox) - является как бы посредником, а мне хотелось бы напрямую, без посредника.tasdel
Сообщение отредактировал tasdel - Вторник, 19.01.2021, 23:19