Сценарий Excel VBA, чтобы проверить, появляется ли значение ячейки в массиве других ячеек. Если нет, покажите MsgBox и заставьте пользователя повторно ввести - PullRequest
0 голосов
/ 29 марта 2020

начинающий VBA здесь. Я извиняюсь за невозможность предоставить фрагмент кода, но я ищу скрипт, который работает следующим образом:

  1. Проверьте, отображается ли значение, введенное в ячейку (например, A1), в массиве ячейки (скажем, B1: B100).
  2. Если значение, введенное в A1, НЕ появляется в B1: B100, покажите MsgBox с кнопками Retry / Cancel, который предупреждает пользователя о том, что их ввод неверен.
  3. Если пользователь выбирает «Повторить», повторно активировать ячейку A1, чтобы пользователь мог повторно ввести другое значение. Если пользователь выбирает Отмена, оставьте ячейку A1 пустой и выйдите из нее.

Я ищу только решение VBA, а НЕ встроенную функцию проверки данных Excel (по ряду причин).

Спасибо всем!

1 Ответ

0 голосов
/ 29 марта 2020

Попробуйте это для начала. Если вы вставите «Shape» и назначите ему этот макрос. Форма может использоваться как кнопка для запуска макроса при нажатии.

Sub Macro1()

Dim v1 As Variant
Dim loop1, msgbutton As Long

v1 = Cells(1, 1).Value 'read the value in cell A1

For loop1 = 1 To 100
    'compare v1 with cells range B1 to B100
    If v1 = Cells(loop1, 2).Value Then Exit For
Next loop1

'if there is a match the loop will exit before reaching 101
If loop1 > 100 Then
    'no match so make a message box
    msgbutton = MsgBox("The data is invalid.", 5, "Box Title")
    If msgbutton = 4 Then 'retry
        Cells(1, 1).Value = Empty
        Cells(1, 1).Select
    Else 'cancel
        Cells(1, 1).Value = Empty
    End If
Else 'it's a match
    Stop 'your code here
End If

End Sub
...