Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Excel. Запрет Cut в меню


Автор: Сквозняк 19.11.2003, 10:11
Подскажите, плз, как в макросе описать запрет функции Cut. Есть файл Excel, в котором рушатся формулы, если использовать функции Cut/Paste. Как в auto_open() описать запрет функции Cut при открытии файла и снятие запрета при его закрытии? Или есть другие варианты решения этой проблемы?

Автор: Alles 19.11.2003, 11:36
Цитата
Есть файл Excel, в котором рушатся формулы, если использовать функции Cut/Paste.


что за формулы ? или связанные ссылки ?

Автор: Сквозняк 19.11.2003, 13:13
Связанные ссылки

Автор: Alles 20.11.2003, 02:59
C тебя как с партизана надо по слову вытаскивать ...... немногословный ты наш. !
А редактируется что у тебя и каким образом ? . Если просто запретить тогда сделай защиту листа , и открой доступ на редактирование тех ячеек которые необходимо редактировать , я в тех ячейках где прописаны ссылки ?..... EXCEL сам бортанет при активизации.

Автор: Сквозняк 20.11.2003, 15:03
Пишу подробнее и конкретнее:
есть ячейка F36. в ней вводится какое-то значение. В ячейке H38 забита ссыла "=H36*$F36*IF($D36=1;H$5;H$4)/1000".

есть ячейка F39. в ней пока пусто. В ячейке H41 забита ссыла "=H39*$F39*IF($D39=1;H$5;H$4)/1000".

Народу по каким-то причинам хочется значение из F36 перенести в F39. Причем делают они это с использованием Cut/Paste. После этого в ячейке H38 образуется ссыла =H36*$F39*IF($D36=1;H$5;H$4)/1000", а в ячейке H41 - "=H39*#REF!*IF($D39=1;H$5;H$4)/1000".
На листе все ячейки защищены, оставлены только те, в которые народ вносит значения. Т.е. получается, что F36 и F39 открыты для редактирования, а H38 и H41 - защищены.
Сдается мне, что эта проблема решается очень просто, а вот как - не пойму smile.gif

Автор: Alles 21.11.2003, 08:46
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.CutCopyMode = False
End Sub

Ну вот так вроде работает .

Автор: Alles 21.11.2003, 09:04
Код
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
N = Selection.Address
M = Range(N).Cells
If M <> Empty Then Application.CutCopyMode = False
End Sub

А можно и вот так. В первом случае у тебя идет блокирование CutCopy полностью независимо от того пустая ли ячейка для Вставки, а в этом варианте будет блокироваться только если ячейка для Вставки не пустая.
Не буду спорить если меня кто то поправит.

Автор: Сквозняк 21.11.2003, 11:03
Спасибо, все конечно классно работает smile.gif Но мне нужно было заглушить только Cut, а не Copy sad.gif Есть такой вариант?

Автор: Сквозняк 21.11.2003, 12:16
Вроде бы победил:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Application.CutCopyMode
Case Is = xlCut
Application.CutCopyMode = False
End Select
End Sub

Это только для одного листа, а не для всей книги.
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)