解决 EXCEL 中循环引用的主要问题

解决 EXCEL 中循环引用的主要问题

假设有 3 种产品 A、B 和 C。客户可以选择任意一种,他们只需输入“是”即可。

问题:我希望在产品 A 中输入“是”,这将导致产品 B 和 C 显示“否”。同样,如果客户选择产品 B,则 A 和 C 将显示“否”。

请帮助我解决这个问题。需要您的宝贵建议。

答案1

假设A1:A3是产品标题,B1:B3是用户选择。

将以下代码放入工作表模块:

Private Sub Worksheet_Change(ByVal Target As Range)
Static busy As Boolean
Dim r As Range, r1 As Range, r0 As Range
If busy Then Exit Sub
Set r0 = Range("B1:B3") ' User selection range
busy = True
Set r = Application.Intersect(Target, r0)
If r Is Nothing Then
    busy = False
    Exit Sub
Else
    For Each r1 In r
        If r1.Value = "yes" Then
            r0.Value = "no"
            r1.Value = "yes"
            Exit For
        Else
            r1.Value = "no"
        End If
    Next
    busy = False
End If
End Sub

请记住 - 当将范围复制粘贴到用户选择范围时,最上面的“是”将被接受,而其他所有值将被忽略。如果有“是”值,则所有其他值都将替换为“否”。

也许在某些特殊情况下存在一些错误会导致错误的结果 - 对其进行调试。

当然,任何文字都可以被编辑或用存储适当值的变量替换。

相关内容