Правило проверки Excel VBA - PullRequest
       3

Правило проверки Excel VBA

0 голосов
/ 22 сентября 2010

У меня есть две колонки в электронной таблице, которые называются А1 и А2.Введенные данные могут быть только «Y» или «N».Однако A1 и A2 не могут иметь одну и ту же запись для одной и той же записи.Например, если значение A1 в записи № 3 равно «Y», то значение A2 в записи № 3 должно быть «N».и не может быть "Y".Кроме того, если A1 в записи № 3 - «N», A2 должен быть «Y».Другими словами, A1 и A2 не могут иметь одинаковую запись в одной записи.Имеет ли это смысл?какой будет лучший способ сделать это?используя VBA?или используя элементы управления листа?

, я написал в подпункте Submit_click простое условие: если Range (A1) .value = Range (A2) .value, то MsgBox (".....")

, но это противоречит функции сохранения, которая есть в Worksheet_beforeClose.Когда пользователь закрывает лист без отправки, появляется сообщение с предупреждением о том, что он / она забыл отправить.Но текущая проблема, с которой я сталкиваюсь, заключается в том, что если пользователь вводит «Y» для А1 и А2, а затем закрывает таблицу перед отправкой, пользователю выводится предупреждение (вы хотите отправить?), Икак только пользователь отвечает «Да», отображается другое сообщение проверки, потому что А1 и А2 имеют одинаковое значение «Y».Тогда программа просто закрылась без отправки.

Прошу направлять меня,

1 Ответ

1 голос
/ 22 сентября 2010

поместите это в событие Worksheet_Change. Это исправит значения после редактирования ячейки.

Const c1pos = 1
Const c2pos = 2

Application.EnableEvents = False

Select Case Target.Column
    Case c1pos
        If UCase(Target.Value) = "Y" Then
            ActiveSheet.Cells(Target.Row, c1pos) = "Y"
            ActiveSheet.Cells(Target.Row, c2pos) = "N"
        Else
            ActiveSheet.Cells(Target.Row, c1pos) = "N"
            ActiveSheet.Cells(Target.Row, c2pos) = "Y"
        End If
    Case c2pos
        If UCase(Target.Value) = "Y" Then
            ActiveSheet.Cells(Target.Row, c1pos) = "N"
            ActiveSheet.Cells(Target.Row, c2pos) = "Y"
        Else
            ActiveSheet.Cells(Target.Row, c1pos) = "Y"
            ActiveSheet.Cells(Target.Row, c2pos) = "N"
        End If
End Select

Application.EnableEvents = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...