Как проверить информацию вводится в ячейку, только если соседняя ячейка не пуста. Excel VBA

251
J Doe

У меня есть два столбца, один (B) с именем и другой (A) с номером. Я пытаюсь сделать так, чтобы сообщение об ошибке не позволило мне закрыть Excel, если ячейки в столбце A пустые, а соседние ячейки в столбце B не пустые.

Например, если ячейка B2 заполнена именем, тогда соседняя ячейка A2 ДОЛЖНА также иметь номер, соответствующий ей ... в противном случае пользователю будет запрещено закрывать Excel.

Я также хотел бы, чтобы ячейки, в которых отсутствует информация в столбце А, были выделены красным цветом.

Идея состоит в том, чтобы пользователи не вводили информацию в столбец A, где в столбце b присутствует имя.

Может ли кто-нибудь помочь мне с этим?

Спасибо

1
Чтобы уточнить, выделение не для отсутствующей информации (все пустые ячейки A изначально выделены), это только для недостающей информации, когда B имеет значение, верно? Кроме того, вы говорите, что видимого предупреждения недостаточно, вы действительно хотите предотвратить закрытие? fixer1234 5 лет назад 0
Да, правильно на обоих фронтах. Спасибо J Doe 5 лет назад 0

1 ответ на вопрос

3
BruceWayne

Вы можете поместить это в ThisWorkbookмодуль в проекте:

enter image description here

Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim lastRow As Long Dim ws As Worksheet  Set ws = ThisWorkbook.Worksheets("Sheet1") ' Change this to the sheet you need to check! lastRow = ws.Range("B" & Rows.Count).End(xlUp).Row  Dim rng As Range, cel As Range Set rng = ws.Range(ws.Cells(1, 2), ws.Cells(lastRow, 2))  For Each cel In rng If cel.Offset(0, -1).Value = "" And cel.Value <> "" Then MsgBox (cel.Address & " is empty. Please populate before closing file.") cel.Offset(0, -1).Interior.Color = RGB(255, 0, 0) Cancel = True ' Exit Sub End If Next cel  End Sub 

Перед тем, как закрыть лист, он проверит диапазон A1:A[last row in col. B]и выяснит, пустые ли ячейки в столбце A, а в столбце B нет. Затем он сообщит вам адрес для ввода информации. в.

Спасибо за это, это очень близко к тому, что я искал. Не могли бы вы сделать так, чтобы ячейки А подсвечивались только тогда, когда в соседней ячейке В есть информация, а в ячейке А нет. Например, если в ячейке B есть имя, но ячейка A рядом с ним пуста, ячейка будет выделена, но как только эта ячейка заполнится, она больше не будет выделяться. Кроме того, если это не слишком сложно - не могли бы вы сделать так, чтобы предупреждающее сообщение ссылалось на имя из столбца B рядом с отсутствующей ячейкой A. Так что, если бы Дж. Смит находился в камере В2, а А2 был пустым, в сообщении было бы сказано: «Дж. Смит нам не хватает» J Doe 5 лет назад 0
@ J На самом деле, думая об этом, вам просто нужно оставить часть окна сообщения, и он может просто сказать «Пожалуйста, заполните пустые ячейки». Затем просто используйте условное форматирование, чтобы выделить пустые ячейки, где следующий столбец не пустой. Другие вещи говорят сами за себя, просто попробуйте сначала и Google вокруг. BruceWayne 5 лет назад 0

Похожие вопросы