При вводе в ячейку данных предприятия решил сделать проверку на количество цифр, ведь легко ошибиться при вводе расчетного и корр. счетов.
Сделал следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
If Left(Target.Address(0, 0), 1) <> "B" Then Exit Sub
' Проверка количества цифр
'Индекс
If Target.Offset(0, -1).Value = "Индекс" Then
If Len(Target) <> 6 Then
' MsgBox "Введите правильный расчетный счет!", vbExclamation, "ОШИБКА!!!"
MsgBox " Количество цифр индекса" & Chr(10) & Chr(10) & _
" должно быть равным 6-ти." & Chr(10) & Chr(10) & _
"В введенном Вами поле количество цифр составляет " & Len(Target) & _
" цифр!" & Chr(10) & Chr(10) & _
" Введите правильный индекс!", vbExclamation, "ОШИБКА!!!"
Target.Select
Target.Interior.Color = 255
Else
Target.Interior.Pattern = xlNone
End If
End If
'Рассчетный счет
If Target.Offset(0, -1).Value = "Расч./счет" Then
If Len(Target) <> 20 Then
' MsgBox "Введите правильный расчетный счет!", vbExclamation, "ОШИБКА!!!"
MsgBox " Количество цифр расчетного счета" & Chr(10) & Chr(10) & _
" должно быть равным 20-ти." & Chr(10) & Chr(10) & _
"В введенном Вами поле количество цифр составляет " & Len(Target) & _
" цифр!" & Chr(10) & Chr(10) & _
" Введите правильный расчетный счет!", vbExclamation, "ОШИБКА!!!"
Target.Select
Target.Interior.Color = 255
Else
Target.Interior.Pattern = xlNone
End If
End If
'Корреспондентский счет
If Target.Offset(0, -1).Value = "Кор./счет" Then
If Len(Target) <> 20 Then
MsgBox " Количество цифр корреспондентского счета" & Chr(10) & Chr(10) & _
" должно быть равным 20-ти." & Chr(10) & Chr(10) & _
"В введенном Вами поле количество цифр составляет " & Len(Target) & _
" цифр!" & Chr(10) & Chr(10) & _
" Введите правильный корреспондентский счет!", vbExclamation, "ОШИБКА!!!"
Target.Select
Target.Interior.Color = 255
Else
Target.Interior.Pattern = xlNone
End If
End If
End Sub
Это все работает, если вводить в ячейку вручную. Но когда копируешь и вставляешь несколько значений, то это не работает.
Вопрос:
Как сделать, чтобы проверка запускалась и при копировании тоже?
Сделал следующим образом:
Private Sub Worksheet_Change(ByVal Target As Range)
If Left(Target.Address(0, 0), 1) <> "B" Then Exit Sub
' Проверка количества цифр
'Индекс
If Target.Offset(0, -1).Value = "Индекс" Then
If Len(Target) <> 6 Then
' MsgBox "Введите правильный расчетный счет!", vbExclamation, "ОШИБКА!!!"
MsgBox " Количество цифр индекса" & Chr(10) & Chr(10) & _
" должно быть равным 6-ти." & Chr(10) & Chr(10) & _
"В введенном Вами поле количество цифр составляет " & Len(Target) & _
" цифр!" & Chr(10) & Chr(10) & _
" Введите правильный индекс!", vbExclamation, "ОШИБКА!!!"
Target.Select
Target.Interior.Color = 255
Else
Target.Interior.Pattern = xlNone
End If
End If
'Рассчетный счет
If Target.Offset(0, -1).Value = "Расч./счет" Then
If Len(Target) <> 20 Then
' MsgBox "Введите правильный расчетный счет!", vbExclamation, "ОШИБКА!!!"
MsgBox " Количество цифр расчетного счета" & Chr(10) & Chr(10) & _
" должно быть равным 20-ти." & Chr(10) & Chr(10) & _
"В введенном Вами поле количество цифр составляет " & Len(Target) & _
" цифр!" & Chr(10) & Chr(10) & _
" Введите правильный расчетный счет!", vbExclamation, "ОШИБКА!!!"
Target.Select
Target.Interior.Color = 255
Else
Target.Interior.Pattern = xlNone
End If
End If
'Корреспондентский счет
If Target.Offset(0, -1).Value = "Кор./счет" Then
If Len(Target) <> 20 Then
MsgBox " Количество цифр корреспондентского счета" & Chr(10) & Chr(10) & _
" должно быть равным 20-ти." & Chr(10) & Chr(10) & _
"В введенном Вами поле количество цифр составляет " & Len(Target) & _
" цифр!" & Chr(10) & Chr(10) & _
" Введите правильный корреспондентский счет!", vbExclamation, "ОШИБКА!!!"
Target.Select
Target.Interior.Color = 255
Else
Target.Interior.Pattern = xlNone
End If
End If
End Sub
Это все работает, если вводить в ячейку вручную. Но когда копируешь и вставляешь несколько значений, то это не работает.
Вопрос:
Как сделать, чтобы проверка запускалась и при копировании тоже?