1

我可能会问一个愚蠢的问题,但我正在自学 VBA,我只是被难住了,我什至不确定我可以使用哪些术语来查找解决方案。

我正在编写一个将三个变量与其他三个变量进行比较的代码,然后我想显示哪些变量已更改。

所以如果 x = a 但 y <> b 和 z <> c 那么输出应该是 b/c

我制定了一个可以正常工作的代码

    Dim Str As String
    If X <> A Then
        If Y <> B Then
            If Z <> C Then
                Str = "a/b/c"
            Else
                Str = "a/b"
            End If
        ElseIf Z <> C Then
            Str = "a/c"
        Else
            Str = "a"
        End If
    ElseIf Y <> B Then
            If Z <> C Then
                Str = "b/c"
            Else
                Str = "b"
            End If
    Else
        Str = "c"
    End If

但是随着我增加变量的数量,这会很快变得非常复杂。

如果有人能帮助我找到一种没有指数复杂性的更简单的方法,我将不胜感激。

非常感谢大家!

4

2 回答 2

3

您需要相互独立地测试每个变量对——而不是在一个巨大的If构造树中将它们链接在一起。

例子:

str = "" 'Start with blank string. Append as required.
If x <> a Then str = str & "a/"
If y <> b Then str = str & "b/"
If z <> c Then str = str & "c/"

'Remove the extra / at the end
If Right(str, 1) = "/" Then str = Left(str, Len(str - 1))
于 2012-09-10T06:55:55.767 回答
-1

您可以将 2 个字符串放入 2 个数组中,然后使用FOR...NEXT构造来循环两个数组。您可以使用UBound(arValues)动态找出数组中的项目数。
祝你好运

于 2012-09-10T06:49:53.120 回答