如果两列在其行中具有相等的值,我如何实现对话框消息?

问题描述 投票:0回答:1

我有分发给管理员的工作表和列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

我想要它所以mgr无法输入相同的值

这可能吗?

vba excel-vba
1个回答
0
投票

如果您想要更直接的东西,可以使用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

这需要放在工作表的代码模块中,以便正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.