Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запрет вставки с буфера обмена в ячейку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Запрет вставки с буфера обмена в ячейку
Irinka@M Дата: Вторник, 31.01.2017, 09:54 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день. подскажите, пожалуйста, как запретить вставку с буфера обмена в конкретную ячейку.
 
Ответить
СообщениеДобрый день. подскажите, пожалуйста, как запретить вставку с буфера обмена в конкретную ячейку.

Автор - Irinka@M
Дата добавления - 31.01.2017 в 09:54
_Boroda_ Дата: Вторник, 31.01.2017, 10:03 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Можно защитить ячейку.
Можно вот такой вариант макросом в модуле листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("C3")) Is Nothing Then Application.CutCopyMode = 0
End Sub
[/vba]
Можно еще что-нибудь придумать
К сообщению приложен файл: 45156576.xlsm (13.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМожно защитить ячейку.
Можно вот такой вариант макросом в модуле листа
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("C3")) Is Nothing Then Application.CutCopyMode = 0
End Sub
[/vba]
Можно еще что-нибудь придумать

Автор - _Boroda_
Дата добавления - 31.01.2017 в 10:03
Irinka@M Дата: Вторник, 31.01.2017, 10:45 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо, большое. Получилось)
 
Ответить
СообщениеСпасибо, большое. Получилось)

Автор - Irinka@M
Дата добавления - 31.01.2017 в 10:45
Alex_ST Дата: Вторник, 31.01.2017, 13:40 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3211
Репутация: 609 ±
Замечаний: 0% ±

2003
К сожалению, этот метод подходит исключительно для запрета вставки скопированных диапазонов (ячеек), т.к. они вставляются из буфера обмена Excel'я, в котором хранится ссылка на объект Range со всеми его причиндалами (форматированием, формулами, валидацией и т.д.)
А если скопирован, например, текст, то виндовый буфер не чистится и вставка проходит нормально.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеК сожалению, этот метод подходит исключительно для запрета вставки скопированных диапазонов (ячеек), т.к. они вставляются из буфера обмена Excel'я, в котором хранится ссылка на объект Range со всеми его причиндалами (форматированием, формулами, валидацией и т.д.)
А если скопирован, например, текст, то виндовый буфер не чистится и вставка проходит нормально.

Автор - Alex_ST
Дата добавления - 31.01.2017 в 13:40
Alex_ST Дата: Вторник, 31.01.2017, 14:21 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3211
Репутация: 609 ±
Замечаний: 0% ±

2003
Можно, конечно, просто стирать виндовый буфер при обращении к ячейкам, куда копирование нужно запретить.
Но тогда если всё-таки нажать "Вставить", информация, которая была в выбранной ячейке, затрётся (но это можно отменить, в отличие от работы обычного макроса[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("C1")) Is Nothing Then ClearClipBoard
End Sub

Sub ClearClipBoard()    ' очистить буфер обмена
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
      .SetText ""
      .PutInClipBoard
   End With
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 31.01.2017, 14:21
 
Ответить
СообщениеМожно, конечно, просто стирать виндовый буфер при обращении к ячейкам, куда копирование нужно запретить.
Но тогда если всё-таки нажать "Вставить", информация, которая была в выбранной ячейке, затрётся (но это можно отменить, в отличие от работы обычного макроса[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("C1")) Is Nothing Then ClearClipBoard
End Sub

Sub ClearClipBoard()    ' очистить буфер обмена
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
      .SetText ""
      .PutInClipBoard
   End With
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 31.01.2017 в 14:21
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!