1

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

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

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

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

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

Спасибо

1 ответ1

3

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

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 отсутствует. Затем он сообщит вам адрес для ввода информации. в.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .