仅当相邻单元格不为空时,如何验证单元格中是否输入了信息。Excel VBA

仅当相邻单元格不为空时,如何验证单元格中是否输入了信息。Excel VBA

我有两列,一列(B)有名称,另一列(A)有数字。我试图这样做,如果 A 列中的单元格为空,但 B 列中的相邻单元格不为空,则错误消息将阻止我关闭 Excel。

例如,如果单元格 B2 填充了名称,则相邻的单元格 A2 也必须有一个与之匹配的数字……否则用户将无法关闭 Excel。

我还希望将 A 列中缺少信息的单元格以红色突出显示。

这样做的目的是为了防止用户在 B 列中有名称的情况下不输入 A 列中的信息。

有人能帮我吗?

谢谢

答案1

您可以将其放入ThisWorkbook项目中的模块中:

在此处输入图片描述

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 列不为空。然后它会向你发送消息框,让你输入信息。

相关内容