比较单元格值以激活Msgbox

时间:2018-03-16 15:37:27

标签: excel vba excel-vba

有宏观问题。 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

1 个答案:

答案 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}}