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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос на запрет вставки через ctrl+v - Страница 3 - Мир MS Excel

  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: китин, _Boroda_, DrMini  
Макрос на запрет вставки через ctrl+v
Литр Дата: Четверг, 23.04.2026, 11:11 | Сообщение № 41
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2013
Nic70y, все верно
сотрудники виртуозно владеют функцией копировать/вставить. Причем источники разные, как я выше перечислил - ворд, пдф, аутлук и др. Даже 1с. Из за этого общая книга раздута адски, и при этом не только форматы кривые вставляются, так еще и ячейка блокируется. Я уже устал обьяснять что бы не в ячейку пастили а в строку формул. Бесполезно.

Может есть простой код типа - при попытке что либо вставить то PasteSpecial Paste:=xlPasteValues, игнорируя форматы и т.п.?


Сообщение отредактировал Литр - Четверг, 23.04.2026, 13:30
 
Ответить
СообщениеNic70y, все верно
сотрудники виртуозно владеют функцией копировать/вставить. Причем источники разные, как я выше перечислил - ворд, пдф, аутлук и др. Даже 1с. Из за этого общая книга раздута адски, и при этом не только форматы кривые вставляются, так еще и ячейка блокируется. Я уже устал обьяснять что бы не в ячейку пастили а в строку формул. Бесполезно.

Может есть простой код типа - при попытке что либо вставить то PasteSpecial Paste:=xlPasteValues, игнорируя форматы и т.п.?

Автор - Литр
Дата добавления - 23.04.2026 в 11:11
Nic70y Дата: Четверг, 23.04.2026, 14:34 | Сообщение № 42
Группа: Друзья
Ранг: Экселист
Сообщений: 9260
Репутация: 2495 ±
Замечаний: 0% ±

Excel 2010
Литр, у нас на работе есть главный копипастер, по совместительству главный бухгалтер,
попросила меня сделать копистилку
попробуйте может и вам понравиться:
выделяйте ячейку столба M
К сообщению приложен файл: kniga2.xlsm (15.0 Kb)


Сообщение отредактировал Nic70y - Пятница, 24.04.2026, 11:34
 
Ответить
СообщениеЛитр, у нас на работе есть главный копипастер, по совместительству главный бухгалтер,
попросила меня сделать копистилку
попробуйте может и вам понравиться:
выделяйте ячейку столба M

Автор - Nic70y
Дата добавления - 23.04.2026 в 14:34
Литр Дата: Четверг, 23.04.2026, 18:00 | Сообщение № 43
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2013
Nic70y, нельзя же так жестоко да еще и с главбухом lol lol lol

а Ваш вариант конечно крутой, хотя символ "пробел" пропускает
И можно б облегчить труд главбуха, так что бы UserForm3 закрывалась не по кнопке "ЗАПИСАТЬ", а просто тыкнуть на другой столбец отличный от "М"
 
Ответить
СообщениеNic70y, нельзя же так жестоко да еще и с главбухом lol lol lol

а Ваш вариант конечно крутой, хотя символ "пробел" пропускает
И можно б облегчить труд главбуха, так что бы UserForm3 закрывалась не по кнопке "ЗАПИСАТЬ", а просто тыкнуть на другой столбец отличный от "М"

Автор - Литр
Дата добавления - 23.04.2026 в 18:00
Nic70y Дата: Пятница, 24.04.2026, 11:39 | Сообщение № 44
Группа: Друзья
Ранг: Экселист
Сообщений: 9260
Репутация: 2495 ±
Замечаний: 0% ±

Excel 2010
символ "пробел" пропускает
да действительно, исправил
закрывалась не по кнопке "ЗАПИСАТЬ"
ну это же 2 энтера)
а просто тыкнуть на другой столбец
тогда смысл формы теряется.

Литр, можно обойтись и без формы, чуть позже попробую,
сейчас работы подвалило внезапно
 
Ответить
Сообщение
символ "пробел" пропускает
да действительно, исправил
закрывалась не по кнопке "ЗАПИСАТЬ"
ну это же 2 энтера)
а просто тыкнуть на другой столбец
тогда смысл формы теряется.

Литр, можно обойтись и без формы, чуть позже попробую,
сейчас работы подвалило внезапно

Автор - Nic70y
Дата добавления - 24.04.2026 в 11:39
Литр Дата: Пятница, 24.04.2026, 12:23 | Сообщение № 45
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2013
Литр, можно обойтись и без формы, чуть позже попробую,


Был бы признателен
 
Ответить
Сообщение
Литр, можно обойтись и без формы, чуть позже попробую,


Был бы признателен

Автор - Литр
Дата добавления - 24.04.2026 в 12:23
Nic70y Дата: Пятница, 24.04.2026, 14:12 | Сообщение № 46
Группа: Друзья
Ранг: Экселист
Сообщений: 9260
Репутация: 2495 ±
Замечаний: 0% ±

Excel 2010


апдэйт есть косяки, но сегодня уже не исправлю
К сообщению приложен файл: kniga3.xlsm (19.1 Kb)


Сообщение отредактировал Nic70y - Пятница, 24.04.2026, 14:25
 
Ответить
Сообщение


апдэйт есть косяки, но сегодня уже не исправлю

Автор - Nic70y
Дата добавления - 24.04.2026 в 14:12
Nic70y Дата: Суббота, 25.04.2026, 11:53 | Сообщение № 47
Группа: Друзья
Ранг: Экселист
Сообщений: 9260
Репутация: 2495 ±
Замечаний: 0% ±

Excel 2010
теперь все норм
(но это не точно (с))
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 13 And Target.Value = "" Then
        On Error Resume Next
        aa = u 'то, что в буфере
        If aa <> "" Then
            ab = Replace(aa, ",", ".") 'запятые заменяем точками (пример косяка 1,000)
            ac = Len(aa) - Len(Replace(ab, ".", "")) - 1
            If ac > 0 Then 'выбрасываем разделители тысяч
                For ad = 1 To ac
                    ae = InStr(ab, ".")
                    af = Left(ab, ae - 1)
                    ag = Mid(ab, ae + 1, 15)
                    ab = af & ag
                Next
            End If
            ba = Array(".", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            bb = Len(ab)
            If bb > 0 Then 'заменяем символы невходящие в Array пробелами
                For bc = 1 To bb
                    be = Mid(ab, bc, 1)
                    bf = Application.Match(be, ba, 0)
                    If IsNumeric(bf) = False Then
                        ab = Replace(ab, be, " ")
                    End If
                Next
            End If
            ca = Replace(ab, " ", "") 'убираем пробелы
            cb = Val(ca)
            If ca <> "" And IsNumeric(cb) Then  'если получили число, тогда
                Target = cb                     'запишем его в ячейку
            End If
            Range("a1").Copy 'копируем ячейку (чтоб в буфере был excel)
            Application.CutCopyMode = False 'очищаем буфер
        End If
    End If
End Sub
[/vba]
К сообщению приложен файл: kniga4.xlsm (19.8 Kb)
 
Ответить
Сообщениетеперь все норм
(но это не точно (с))
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 13 And Target.Value = "" Then
        On Error Resume Next
        aa = u 'то, что в буфере
        If aa <> "" Then
            ab = Replace(aa, ",", ".") 'запятые заменяем точками (пример косяка 1,000)
            ac = Len(aa) - Len(Replace(ab, ".", "")) - 1
            If ac > 0 Then 'выбрасываем разделители тысяч
                For ad = 1 To ac
                    ae = InStr(ab, ".")
                    af = Left(ab, ae - 1)
                    ag = Mid(ab, ae + 1, 15)
                    ab = af & ag
                Next
            End If
            ba = Array(".", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            bb = Len(ab)
            If bb > 0 Then 'заменяем символы невходящие в Array пробелами
                For bc = 1 To bb
                    be = Mid(ab, bc, 1)
                    bf = Application.Match(be, ba, 0)
                    If IsNumeric(bf) = False Then
                        ab = Replace(ab, be, " ")
                    End If
                Next
            End If
            ca = Replace(ab, " ", "") 'убираем пробелы
            cb = Val(ca)
            If ca <> "" And IsNumeric(cb) Then  'если получили число, тогда
                Target = cb                     'запишем его в ячейку
            End If
            Range("a1").Copy 'копируем ячейку (чтоб в буфере был excel)
            Application.CutCopyMode = False 'очищаем буфер
        End If
    End If
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 25.04.2026 в 11:53
Литр Дата: Воскресенье, 26.04.2026, 15:07 | Сообщение № 48
Группа: Пользователи
Ранг: Участник
Сообщений: 52
Репутация: 0 ±
Замечаний: 0% ±

2013
(но это не точно (с))


к сожалению не работает
 
Ответить
Сообщение
(но это не точно (с))


к сожалению не работает

Автор - Литр
Дата добавления - 26.04.2026 в 15:07
Nic70y Дата: Понедельник, 27.04.2026, 07:31 | Сообщение № 49
Группа: Друзья
Ранг: Экселист
Сообщений: 9260
Репутация: 2495 ±
Замечаний: 0% ±

Excel 2010
не работает
файл скачивали?
там кроме макроса в модуле листа, есть еще удф в стандартном,
о чем я писал в сооб#46
тестировал - работает

апдэйт, так будет лучше и без удф
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 13 Then
        Application.EnableEvents = False
        With Target
            aa = .Value
            .Clear
            '==========================================
            'здесь прописать востановление форматов
        End With
        If aa <> "" Then
            ab = Replace(aa, ",", ".") 'запятые заменяем точками (пример косяка 1,000)
            ac = Len(aa) - Len(Replace(ab, ".", "")) - 1
            If ac > 0 Then 'выбрасываем разделители тысяч
                For ad = 1 To ac
                    ae = InStr(ab, ".")
                    If ae > 0 Then
                        af = Left(ab, ae - 1)
                        ag = Mid(ab, ae + 1, 15)
                        ab = af & ag
                    End If
                Next
            End If
            ba = Array(".", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            bb = Len(ab)
            If bb > 0 Then 'заменяем символы невходящие в Array пробелами
                For bc = 1 To bb
                    be = Mid(ab, bc, 1)
                    bf = Application.Match(be, ba, 0)
                    If IsNumeric(bf) = False Then
                        ab = Replace(ab, be, " ")
                    End If
                Next
            End If
            ca = Replace(ab, " ", "") 'убираем пробелы
            cb = Val(ca)
            If ca <> "" And IsNumeric(cb) Then  'если получили число, тогда
                Target = cb                     'запишем его в ячейку
            End If
        End If
        Application.EnableEvents = True
    End If
End Sub
[/vba]
К сообщению приложен файл: kniga6_1.xlsm (18.3 Kb)


Сообщение отредактировал Nic70y - Понедельник, 27.04.2026, 09:02
 
Ответить
Сообщение
не работает
файл скачивали?
там кроме макроса в модуле листа, есть еще удф в стандартном,
о чем я писал в сооб#46
тестировал - работает

апдэйт, так будет лучше и без удф
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 13 Then
        Application.EnableEvents = False
        With Target
            aa = .Value
            .Clear
            '==========================================
            'здесь прописать востановление форматов
        End With
        If aa <> "" Then
            ab = Replace(aa, ",", ".") 'запятые заменяем точками (пример косяка 1,000)
            ac = Len(aa) - Len(Replace(ab, ".", "")) - 1
            If ac > 0 Then 'выбрасываем разделители тысяч
                For ad = 1 To ac
                    ae = InStr(ab, ".")
                    If ae > 0 Then
                        af = Left(ab, ae - 1)
                        ag = Mid(ab, ae + 1, 15)
                        ab = af & ag
                    End If
                Next
            End If
            ba = Array(".", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
            bb = Len(ab)
            If bb > 0 Then 'заменяем символы невходящие в Array пробелами
                For bc = 1 To bb
                    be = Mid(ab, bc, 1)
                    bf = Application.Match(be, ba, 0)
                    If IsNumeric(bf) = False Then
                        ab = Replace(ab, be, " ")
                    End If
                Next
            End If
            ca = Replace(ab, " ", "") 'убираем пробелы
            cb = Val(ca)
            If ca <> "" And IsNumeric(cb) Then  'если получили число, тогда
                Target = cb                     'запишем его в ячейку
            End If
        End If
        Application.EnableEvents = True
    End If
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 27.04.2026 в 07:31
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

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