2014-12-22 3 views
0

Я новичок в VBA ... ищет код, который позволит мне ввести значение в столбце, если значение в одном или нескольких из трех ячейки сразу слева "содержит" слово "Другое". Я успешно написал код так, что если значение в одной или нескольких ячейках «Другое», мне запрещено вводить значение, но не удалось использовать ISERROR и FIND, чтобы код искал текст, который включает "Другие". Вот что у меня есть прямо сейчас ...Код VBA для отображения окна сообщения, если значение в другой ячейке содержит определенный текст

If Target.Column = 15 And Target <> "" Then 
    If Cells(Target.Row, Target.Column - 1).Value <> "Other" _ 
     Or Cells(Target.Row, Target.Column - 2).Value <> "Other" _ 
     Or Cells(Target.Row, Target.Column - 3).Value <> "Other" _ 
     Then 

     Target.Value = "" 
     MsgBox "First Select 'Other' value in one or more of the 'Excluded Employee' Columns to the left" 
     Exit Sub 
    End If 
End If 
exitHandler: 
    Application.EnableEvents = True 

End Sub 

Любые предложения были бы очень признательны!

+0

Вы бы не хотели использовать AND, OR не? Путь у него есть, вам понадобятся все 3 столбца, которые будут содержать другие –

+0

Потому что OP ищет 1 или более других - не 3. – brettdj

ответ

1
If Target.Column = 15 And Target <> "" Then 
    If InStr(1, Cells(Target.Row, Target.Column - 1).Value, "Other") = 0 _ 
     And InStr(1, Cells(Target.Row, Target.Column - 2).Value, "Other") = 0 _ 
     And InStr(1, Cells(Target.Row, Target.Column - 3).Value, "Other") = 0 _ 
     Then 

     Target.Value = "" 
     MsgBox "First Select 'Other' value in one or more of the 'Excluded Employee' Columns to the left" 
     Exit Sub 
    End If 
End If 
exitHandler: 
    Application.EnableEvents = True 
End Sub 
0

Вы можете использовать COUNTIF с шаблона, чтобы посмотреть, по крайней мере, один раз клетки, содержащие другой, т.е .:

If target.Column = 15 And target.Value <> "" Then 
If Application.WorksheetFunction.CountIf(target.Offset(0, -3).Resize(1, 3), "*other*") = 0 Then 
     target.Value = "" 
     MsgBox "First Select 'Other' value in one or more of the 'Excluded Employee' Columns to the left" 
     Exit Sub 
End If 
End If 
Смежные вопросы