VBA probleme beim löschen von doppelten einträgen

ungeliebt

Mitglied
Hallo nach 1000 von jahren muss ich eine winzig kleine VBA anwendung schreiben,
bin allerdings garnicht mehr fit da drin. Dazu kommt das ich generell seit ewige zeit nicht mehr selbstständig etwas geschrieben habe.

Nun zu meinem Programm
ich habe eine Spalte da stehen daten drin wie bspw
äpfel
kirschen
tomaten
äpfel
tomaten
birnen

in meinem programm wird die Spalte solange durchlaufen bis keine werte mehr eingetragen sind, das klappt auch wunderbar,
nun möchte ich diese daten in eine Combobox übertragen allerdings keine doppelten einträge.

hier dazu mal mein aktueller Quellcode


Code:
 Dim x() As String
  
    inhalt2 = Worksheets("St_Template").ComboBox2.Value
    Worksheets("St_Template").ComboBox2.Clear
    zeile = 2
    
    While Worksheets("Stamm").Cells(zeile, 122) <> ""
                    
          zeile = zeile + 1
    Wend
          ReDim x(zeile) As String
                   
        y = 2
    While Worksheets("Stamm").Cells(y, 122) <> ""
                           
            eintrag2 = Worksheets("Stamm").Cells(y, 122)
                         
            For j = 1 To zeile
             x(j) = Worksheets("Stamm").Cells(y, 122)
                If x(j) = eintrag2 Then
                                               
                    inCombo = x(j)
                End If
                If inCombo = "" Then
                Else
                    Worksheets("St_Template").ComboBox2.AddItem inCombo
                End If
                
           Next j
           y = y + 1
         
 Wend
 
Du kannst eine kleine Funktion in_array() erstellen. Damit kannst du überpüfen, ob der Wert bereits im Array x drin ist

Visual Basic:
'/**
' * Überprüft ob ein String bereits in einem String-Array vorhanden ist
' * @param  Array<String>       String-Array
' * @param  String              Zu suchendes Element
' * @return Boolean
' */
Public Function in_string_array(ByRef iArray() As String, ByVal iItem As String) As Boolean
    For Each item In iArray
        If item = iItem Then
            in_string_array = True
            Exit For
        End If
    Next item
End Function

'/**
' * Testmethode um die Funktion in_string_array zu testen
' */
Public Sub testInArray()
    Dim x(3)     As String
    
    x(0) = "äpfel"
    x(1) = "kirschen"
    x(2) = "tomaten"
    x(3) = "birnen"
    
    Debug.Print in_string_array(x, "abc")
    Debug.Print in_string_array(x, "tomaten")
End Sub
 

Neue Beiträge

Zurück