首页 > 解决方案 > 如果两列的行中的值相等,我如何实现对话框消息?

问题描述

我有分发给经理的工作表。A:O 列被锁定(受保护的工作表),但 P:T 列可通过一些下拉验证列表进行编辑。

如果经理在 S 列(单元格 S2)中输入数据,并且他们从下拉列表中的选择 = 与 O 列(单元格 O2)中的值相同,那么我想要一个对话框来显示他们不能输入相同的值。

我在想这样的事情:

rng 1 = O 列,rng 2 = S 列

Dim rng1 As range, rng2 As range
lastrow = ActiveWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).row

Set rng1 = Range("O2:O" & lastrow)
Set rng2 = Range("S2:S" & lastrow)

If rng1.value = rng2.value Then
    -dialogue box "You cannot input the same %"
End If

标签: excelvba

解决方案


如果您想要更直接的内容,您可以使用该Worksheet_Change()事件使对话框在输入值时立即显示 - 并清除该值。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim watchRng As Range
    Set watchRng = Me.Columns("S")

    If Not Intersect(Target, watchRng) Is Nothing Then

        If Target.Value = Me.Cells(Target.Row, "O").Value Then

            Application.EnableEvents = False

            MsgBox "You cannot input the same %"
            Target.ClearContents

            Application.EnableEvents = True

        End If

    End If

End Sub

这需要放在工作表的代码模块中才能正常工作。


推荐阅读