McSaesch Geschrieben 12. Oktober 2005 Geschrieben 12. Oktober 2005 Ich habe ein Array mit mehreren Namen geladen. Nun habe ich aber das Problem dass einige Name mehrmals auftauchen. Wie kann ich nun eine Abfangroutine schreiben damit, wenn der Name doppelt oder öfter auftritt gelöscht wird?? Zitieren
-roTekuGeL- Geschrieben 12. Oktober 2005 Geschrieben 12. Oktober 2005 da du ja für jeden mist gleich nen thread aufmachst würde ich dir raten erstmal nachzudenken... ich denke das bringt dir mehr und dieses "problem" solltest du auch alleine lösen können, einfach mal gedanken machen Zitieren
Amstelchen Geschrieben 12. Oktober 2005 Geschrieben 12. Oktober 2005 ich würde im vorfeld schon mal garkeine doppelten einträge kumulieren. wenn du deine combobox/dein array mit daten aus einer sql-abfrage füllst, würde ich mal bei "distinct" oder "group by" anfangen. s'Amstel Zitieren
McSaesch Geschrieben 12. Oktober 2005 Autor Geschrieben 12. Oktober 2005 Also wenn stört es denn erheblich was ich hier für Probleme vorbringe?? Würde ich Fragen stellen wie: Was soll ich heute anziehn? Alles klar seh ich ein. Aber: Sinn und Zwecks eines Forums is die gemeinsame Lösung von Problemen, odr nicht? Und andere Leute lesen die Beiträge mit den Lösungen weil sie ähnliche Probleme haben und ihnen hier vielleicht geholfen werden kann, wenn auch nicht dirket. Was SQL angeht, kein Plan. Ich bastel hier mit VBA und mehr nicht, trotzdem Danke Zitieren
Klotzkopp Geschrieben 12. Oktober 2005 Geschrieben 12. Oktober 2005 Sinn und Zwecks eines Forums is die gemeinsame Lösung von Problemen, odr nicht?Es ist dir vielleicht nicht klar, aber dein "Problem" ist eigentlich ziemlich trivial. Einen passenden Algorithmus kannst du sehr leicht aus dem echten Leben entnehmen. Angenommen, du sammelst irgendwelche Sammelkarten, und du willst keine doppelten. Jetzt kaufst du ein neues Paket. Wie stellst du sicher, dass du die doppelten aussortierst, bevor du sie in deine Sammelkiste packst? Du vergleichst jede Karte in deiner Sammelkiste mit der ersten Karte aus dem Paket. Wenn du dabei keine Karte findest, die der neuen gleicht, kommt die neue in die Kiste. Ansonsten nicht. Dann machst du das gleiche mit der nächsten Karte im Paket. Jetzt ersetzt du "Paket" durch "Array", "Karte" durch "Name" und "Sammelkiste" durch "Combobox". Fertig Zitieren
McSaesch Geschrieben 12. Oktober 2005 Autor Geschrieben 12. Oktober 2005 Das nanne ich doch mal ne ordentliche Lösung, und schön plastzisch dargestellt. Der Weg denn du beschrieben hast ist mir klar. Auch dass ich das am Besten mit Schleifen hinbekomme, aber: Irgendwo bleibt es immer hängen und ich kriege es einfach nicht abgefangen. Ist mein Problem zu trivial, lest es euch nur durch und denkt, das ist mir zu trivial. Dann braucht ihr nicht antwoorten und alles ist im Grünen Bereich. So weit bin ich, nun fehlt nur noch das Abfangen Private Sub UserForm_Activate() i = 1 x = 1 Do kuenstler(i) = Sheets("Tabelle1").Cells(i, 1) album(i) = Sheets("Tabelle1").Cells(i, 2) ComboBox1.AddItem kuenstler(i) i = i + 1 Loop Until Sheets("Tabelle1").Cells(i, 1) = "" TextBox2.Text = Str(i) ComboBox1.ListIndex = 0 End Sub Zitieren
-roTekuGeL- Geschrieben 12. Oktober 2005 Geschrieben 12. Oktober 2005 Irgendwo bleibt es immer hängen und ich kriege es einfach nicht abgefangen. dann zeig doch mal das coding dass du schon hast und dann suchen wir den fehler... hat auf jedenfall nen besseres lerneffekt als wenn hier jemand ne C&P lösung für dich hinstellt... edit: guuuuut edit2: also, jetzt machst du vor dem neuen eintrag in das array ein loop über das array mit dem neuen wert... wenns den wert schon gibt setz meinetwegen ne hilfsvariable auf 1, die dir dann anzeigt dass der artist nicht nochmal hinzugefügt werden muss... klaro? Zitieren
McSaesch Geschrieben 12. Oktober 2005 Autor Geschrieben 12. Oktober 2005 Bin jetzt hier: Private Sub UserForm_Activate() i = 1 x = 1 Do kuenstler(i) = Sheets("Tabelle1").Cells(i, 1) album(i) = Sheets("Tabelle1").Cells(i, 2) ComboBox1.AddItem kuenstler(i) i = i + 1 Loop Until Sheets("Tabelle1").Cells(i, 1) = "" maxx = i x = i For i = 1 To maxx For x = (maxx - 1) To 2 Step -1 If kuenstler(i) = kuenstler(x) And i <> x Then ComboBox1.RemoveItem kuenstler(x) Else End If Next Next TextBox2.Text = Str(i) ComboBox1.ListIndex = 0 End Sub Aber so richtig klappt es nicht, bei RemoveItem bleibt er immer stehn?????!!!! Zitieren
-roTekuGeL- Geschrieben 12. Oktober 2005 Geschrieben 12. Oktober 2005 check das ganze doch BEVOR du es in die box schreibst... als, du hast dein array und den wert in der tabelle, prüf den wert der tabelle gegen das arra< und mach DANN wenn noch nötig denn add... nicht erst adden und dann raussuchen... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.