powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Список, ограничить копирование
12 сообщений из 12, страница 1 из 1
Список, ограничить копирование
    #34570926
nothx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал список для ячейки, поставил галочку "Список допустимых значений", но не тут то было, если же вводить данные вручную в эту ячейку, то при вводе данных не из списка выдается ошибка - все нормально, но если скопировать данные из другой ячейки и вставить в ячейку со списком то проверки не происзодит и можно ввести любые данные. Мне нужно чтобы можно было вводить данные только из списка. Как это обойти?
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34570933
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Защита поля от вставки значения
http://www.sql.ru/forum/actualthread.aspx?tid=435004
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34570935
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34570973
nothx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставил это код для своего листа, но всеравно в ячейку K9 можно копировать.
Код: plaintext
1.
2.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$K$9" Then Application.CutCopyMode = False
End Sub
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34570978
nothx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще как сделать для определенного столбца?
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34570983
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дадахантогда уж лучше
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each MyCell In Target.Cells
        If MyCell.Address = "$F$4" Then
            '...
            'возможный цикл проверки значения
            '...
        End If
    Next MyCell
End Sub
а вообще геморное это дело. лучше всего раз на то пошло защитить лист и вводить данные через форму.

Это используй! наверное!
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34570989
nothx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad Дадахантогда уж лучше
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each MyCell In Target.Cells
        If MyCell.Address = "$F$4" Then
            '...
            'возможный цикл проверки значения
            '...
        End If
    Next MyCell
End Sub
а вообще геморное это дело. лучше всего раз на то пошло защитить лист и вводить данные через форму.

Это используй! наверное!

Так это условия для одной ячейки:
Код: plaintext
If MyCell.Address = "$F$4" Then

Нужно что-то типа:
Код: plaintext
If MyCell.Address >= "$F$4" and MyCell.Address<= "$F$50000" Then


Кто знает как правильно написать?
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34571012
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри, подойдёт?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each MyCell In Target.Cells
        If MyCell.Column =  1  And MyCell.Row >  4  And MyCell.Row <  20  Then  ' Поменяйте номер столбца и строк
          If IsError(Application.Match(MyCell.Value, Array("R1", "R2", "R3", "R4"),  0 )) _
          And MyCell.Value <> "" Then  ' внутри Array - ваш список значений
           MsgBox "В ячейке " & MyCell.Address( 0 ,  0 ) & " значение не удовлетворяет условию"
           MyCell.ClearContents
           MyCell.Interior.ColorIndex =  35 
          End If
        End If
    Next MyCell
End Sub
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34571058
nothx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что надо. Thanks. У меня эти ячейки являются списками выбора, так вот после неудачного CopyPast, ячейка уже становится без списка.
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34571073
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nothxУ меня эти ячейки являются списками выбора, так вот после неудачного CopyPast, ячейка уже становится без списка.
Это вопрос или утверждение???
Если вопрос то
- можно восстанавливать в ячейке список (для этого запишите макрос во время установки списка вручную и посмотрите что получится, а потом добавте в присланный код).
- можно воспользоваться КомбоБоксами
- можно вообще забыть про эти списки ведь проверка есть в макросе
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34571119
nothx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С макросом прокатило. Спасибо.
...
Рейтинг: 0 / 0
Список, ограничить копирование
    #34571297
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadСмотри, подойдёт?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each MyCell In Target.Cells
        If MyCell.Column =  1  And MyCell.Row >  4  And MyCell.Row <  20  Then  ' Поменяйте номер столбца и строк
          If IsError(Application.Match(MyCell.Value, Array("R1", "R2", "R3", "R4"),  0 )) _
          And MyCell.Value <> "" Then  ' внутри Array - ваш список значений
           MsgBox "В ячейке " & MyCell.Address( 0 ,  0 ) & " значение не удовлетворяет условию"
           MyCell.ClearContents
           MyCell.Interior.ColorIndex =  35 
          End If
        End If
    Next MyCell
End Sub


Или так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim myCell As Range, rng As Range
    On Error GoTo ExitSub
    Set rng = Intersect(Target, Range(Cells( 4 ,  6 ), Cells(Rows.Count,  6 )))
    On Error GoTo  0 
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For Each myCell In rng
        If IsError(Application.Match(myCell.Value, Array("R1", "R2", "R3", "R4"),  0 )) _
                And myCell.Value <> "" Then
            MsgBox "В ячейке " & myCell.Address( 0 ,  0 ) & " значение не удовлетворяет условию"
            myCell.ClearContents
        End If
    Next myCell
    Application.EnableEvents = True
    Application.ScreenUpdating = True
ExitSub:
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Список, ограничить копирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]