1

私はばかげた質問をしているかもしれませんが、私は自分自身にVBAを教えています、そして私はただ困惑していて、解決策を探すためにどの用語を使うことができるかさえわかりません。

3つの変数を他の3つの変数と比較するコードを書いているので、どの変数が変更されたかを表示したいと思います。

したがって、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

各変数ペアを互いに独立してテストする必要があります。それらを 1 つの巨大な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 に答える