![仅当相邻单元格不为空时,如何验证单元格中是否输入了信息。Excel VBA](https://linux22.com/image/1561132/%E4%BB%85%E5%BD%93%E7%9B%B8%E9%82%BB%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%8D%E4%B8%BA%E7%A9%BA%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E9%AA%8C%E8%AF%81%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD%E6%98%AF%E5%90%A6%E8%BE%93%E5%85%A5%E4%BA%86%E4%BF%A1%E6%81%AF%E3%80%82Excel%20VBA.png)
我有两列,一列(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 列不为空。然后它会向你发送消息框,让你输入信息。