VBA : wie erstelle ich Kombinationen mit einem if?

2 Antworten

Zunächst einmal würde ich die Zellinhalte mit der Split-Funktion aufteilen.

    Dim links() As String, rechts() As String
    
    links = Split(BereichLinks.Text)
    rechts = Split(BereichRechts.Text)

Da VBA6 (noch) keine Contains-Funktion hat, würde ich mir selber eine schreiben. Damit dann prüfen, ob die Inhalte von links im rechten "Array" enthalten sind und umgekehrt. (Bzw. ich würde über "Mengenfunktionen" wie Union, Intersection, Except gehen, die es in .NET gibt, aber eben noch nicht in VB(A)6. Aber das wäre für einen Anfänger zu technomanisch.) Oder eben doch wieder zwei geschachtelte Schleifen.

    Dim i As Integer, j As Integer, hatUeberschneidung As Boolean
    
    hatUeberschneidung = False
    For i = 0 To UBound(links)
        For j = 0 To UBound(rechts)
            If links(i) = rechts(i) Then
                hatUeberschneidung = True
                Exit For
            End If
        Next
        If hatUeberschneidung Then Exit For ' zwei Ebenen gleichen Schleifentyps verlassen geht nicht so ohne Weiteres
    Next
    
    If Not hatUeberschneidung Then
        ' Einfügen
    End If

Und für Einfügen:

        Cells(currentRow, insertionCol).Text = BereichLinks.Text & " " & BereichRechts.Text
        currentRow = currentRow + 1
IF ( ( Left(B2,2) <> Left(C2,2) AND Left(B2,2) <> Right(C2,2)) OR ( .... ) )  Then
....
Else 
....
End If

bastel mal

ggf halt für B2 und C2 entsprechend etwas nutzen das auch die werte der Zelle genommen wird .