Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Универсальный макрос вставки значений и форматирования чисел из буфера обмена в выделенную ячейку. Возможно ли?
 
Здравствуйте. Хочется получить (вырезку как в Worde) значений и форматирования чисел и вставку их в другой место в минимум действий. Вырезка Экселя не подходит, так как она вырезает всё.

Сейчас как делаю: выделяю исходный диапазон, копирую, встаю в другую ячейку, вставляю значения и форматирование чисел, эскейп (убираю выделение), выделяю исходный диапазон, удаляю значения.
Так как много приходится делать этих операций, из разных мест копирую в разные места вставляю, то хотелось бы ускорить процесс.

Понимаю, что Эксель не текстовый редактор и такого удобства по работе с текстом не будет, но все же интересно можно ли что-то придумать?
Пробовал править код макроредактора, но получаю только ошибки.

Описание задачи также внутри примера.
Изменено: maxrus163 - 16 сен 2020 10:14:53
 
Здравствуйте! попробуйте этот код:
Код
Sub Paste ()
Selection.PasteSpecial xlPasteValues
Selection.PasteSpecial xlPasteFormats
End Sub
Изменено: Настя_Nastya - 16 сен 2020 11:06:28
 
Настя_Nastya, да работает вставка, спасибо). Теперь, надо очистить контент Selection.ClearContents внтури диапазона Application.CutCopyMode? То есть эксель выделяет пунктиром после копирования исходную область, получается, что надо вытащить адрес этого диапазона и прописать его после Selection.ClearContents
Изменено: maxrus163 - 16 сен 2020 11:24:11
 
Неа, тогда попробуйте одним макросом копировать, а другим вставлять
Код
Public s As Range
Sub Copy()
Set s = Selection
s.Copy
End Sub
Sub Paste()
Selection.PasteSpecial xlPasteValues
Selection.PasteSpecial xlPasteFormats
s.ClearContents
End Sub
Изменено: Настя_Nastya - 16 сен 2020 11:33:12
 
Настя_Nastya,спасибо большое) то что нужно)
 
Настя_Nastya,в случае когда исходный и новый диапазон накладываются макрос выдает ошибку run-time error "1004". Возможно ли, в таком случае, научить его  удалять ту часть диапазона которая не наложилась? Если это заморочно, то хотя бы чтобы не удалял исходный вообще и не вылезала ошибка, лишние строки вручную буду удалять.
 
Нашел решение в случае наложения диапазонов копирования и вставки - копирование через "буферные ячейки". Надо определить на листе свободные ячейки, куда будут копироваться данные. После выполнения вставки буферные ячейки очищаются.
Код
Public s As Range
Sub Copy()
Application.ScreenUpdating = False
Set s = Selection
s.Copy
Range("N2:S2").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
s.ClearContents
Selection.Copy
s.Select
     End Sub
Sub Paste()
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
Range("N2:S22").ClearContents
End Sub
Изменено: maxrus163 - 18 сен 2020 07:57:37
 
Выделите нужный диапазон. Возьмите за край и с нажатой Shift перетащите ниже. Отпустите.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
Страницы: 1
Читают тему (гостей: 1)
Наверх