有宏观问题。 VBA初学者。有一种情况:
Column D Column E
3 2
我只是想确保用户不会在D列中输入任何超过E列的内容。如果是这样,会弹出一个消息框并告诉用户该问题。
以下代码适用于单元格D4 / E4,但如果我想将D5与E5,D6与E6等进行比较,则无法使其适用于每个单元格。
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D4") > Range("E4") Then
MsgBox "Discount too high"
End If
End Sub
答案 0 :(得分:4)
使用$set
对象非常重要。它代表已更改的单元格
Target
是否在列Target
D
单元格以避免在粘贴/更新多个单元格时出错Target
转到专栏Offset
E
更新"相同"细胞强>
这也将以相同的折扣率捕获单元格
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, s As String
If Intersect(Target, Range("D:E")) Is Nothing Then Exit Sub
For Each r In Target
If Intersect(Range("D:D"), r.EntireRow).Value > Intersect(Range("E:E"), r.EntireRow).Value And Intersect(Range("E:E"), r.EntireRow) <> vbNullString Then s = s & ", " & r.Address
Next r
If s <> vbNullString Then MsgBox "Discount too high in cells: " & Mid(s, 3)
End Sub
{{3}}