Doppelte Zahlen finden

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Doppelte Zahlen finden

    Hallo zusammen,

    ich habe eine einfache Abfragebox in VBA erstellt. Man kann eine Nummer eingeben, dann auf den Button "Überprüfen" klicken. Anschließend soll ausgegeben werden, ob die eingegebene Artikelnummer bereits in Tabellenblatt "Artikel" in Spalte A vorhanden ist.
    Wenn es möglich ist soll nicht nur angezeigt werden, ob die Nummer schon einmal vorkommt, sondern möglichst auch wie oft und in welcher Zeile. Was muss ich hier programmieren?

    Vielen Dank.
    HR
    Hallo HR,

    schau mal, ob Dich diese Idee hier schon weiterbringt:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub Suchen()
    3. Dim oFinde As Object
    4. Dim sSuch As String, sErsteAdresse As String, sInZeilen As String
    5. Dim iAnz As Integer, WSh As Worksheet
    6. Set WSh = Worksheets("Artikel")
    7. sSuch = InputBox("Bitte Artikelnummer eingeben!", "Suchen und Zählen")
    8. If StrPtr(sSuch) = 0 Then Exit Sub
    9. If sSuch = "" Then Exit Sub
    10. Set oFinde = WSh.Range("A:A").Find(sSuch, LookIn:=xlFormulas) ' Erstes Feld mit dem Suchbegriff suchen
    11. If Not oFinde Is Nothing Then
    12. sErsteAdresse = oFinde.Address ' Erste Adresse merken
    13. Do
    14. Set oFinde = WSh.Range("A:A").FindNext(oFinde)
    15. If oFinde Is Nothing Then Exit Do
    16. iAnz = iAnz + 1
    17. sInZeilen = sInZeilen & oFinde.row & ", "
    18. Loop While Not oFinde Is Nothing And oFinde.Address <> sErsteAdresse
    19. End If
    20. If iAnz = 0 Then
    21. sSuch = "nicht"
    22. Else
    23. sSuch = iAnz & "-mal"
    24. sInZeilen = vbCr & vbCr & "Und zwar in den Zeilen:" & vbCr & Left$(sInZeilen, Len(sInZeilen) - 2)
    25. End If
    26. MsgBox "Die Artikelnummer wurde " & sSuch & " gefunden!" & sInZeilen, vbExclamation, "Suchen und Zählen"
    27. End Sub


    viele Grüße
    Karl-Heinz

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „volti“ ()

    HR2021 schrieb:

    Wenn es möglich ist soll nicht nur angezeigt werden, ob die Nummer schon einmal vorkommt, sondern möglichst auch wie oft und in welcher Zeile.
    Möchtest du Duplikate vermeiden?
    Ich mache so etwas mit bedingter Formatierung mit "Regeln zur Hervorhebung von Zellen..." "Doppelte Werte... "
    Da benötigst du keinen VBA-Code, sondern siehst sofort alle Duplikate rot unterlegt.

    volti schrieb:

    Set oFinde = WSh.Range("A:A").Find(sSuch, LookIn:=xlFormulas) ' Erstes Feld mit dem Suchbegriff suchen
    Ohne es getestet zu haben, würde ich vom Gefühl her eher folgendes verwenden:

    Visual Basic-Quellcode

    1. Set oFinde = WSh.Range("A:A").Find(sSuch, LookIn:=xlValues, LookAt:=xlWhole)​


    HR2021 schrieb:

    Wo gebe ich diesen Code ein?
    In den Event-Code des Überprüfen-Button.
    Nimm dazu einen ActiveX-Button und machen im Entwurfsmodus einen Doppelklick darauf, dann kommst du in der Eventroutine raus.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hallo zusammen,

    wahrscheinlich ist "LookIn:=xlValues, LookAt:=xlWhole", wie von petaod angeführt, die etwas bessere oder auch vollständigere Variante....

    Obwohl bei meinen Tests auch nur ganze Begriffe gefunden wurden (xlWhole default?) und auch reine Werte.....

    viele Grüße
    KH

    volti schrieb:

    xlWhole default?
    Nicht ganz.
    LookAt merkt sich die zuletzt verwendete Einstellung des interaktiven Suchfensters im Excel GUI und verwendet diese das nächste Mal.
    Also sicherheitshalber immer angeben.

    volti schrieb:

    und auch reine Werte
    Nur reine Werte.
    Wenn die Inhalte in den durchsuchten Zellen aus Formeln resultieren, wird er sie nur mit LookIn:=xlValues finden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --