Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
String finden und an variable übergeben
20.05.2009 19:20:33
Peter
Hallöchen zusammen,
nachdem ich nun schon ne halbe Stunde suche und nicht fündig geworden bin, versuche ich die Frage einfach mal in den Raum zu stellen. Es mir hier schon ein paarmal super geholfen worden.
Voraussetzung:
Es gibt eine Tabelle, in der in Spalte "E" entweder ein String (unbekannt) oder eine Zahl (Uninteressant) steht. Wie groß die Tabelle (Zeilenzahl) ist, weiß man auch nicht.
Folgendes habe ich vor:
Wenn ein Makro gestartet wird, soll eine userform aufgehen und in verschiedenen Checkboxen der Inhalt der gefunden unterschiedlichen Strings stehen.
Was also gemacht werden muss:
Die Spalte E nach einem String durchsuchen
- diesen String einer variablen zuweisen
- weitersuchen, aber den gleichen String nicht nochmals einer variablen zuweisen
- einen neu gefunden String wiederum einer variablen zuweisen und weitersuchen
- die checkboxen in der Userform mit den gefundenen Variablen füllen.
Hat da jemand vielleicht einen Ansatz?
Gruß und vielen Dank schonmal!
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String finden und an variable übergeben
20.05.2009 21:01:39
Uduuh
Hallo,
die Sammelei ist einfach. Alles ohne Duplikate in ein Array:

Sub strings()
Dim oDict As Object, rng As Range, arrStrings
Set oDict = CreateObject("scripting.dictionary")
For Each rng In Columns(5).SpecialCells(xlCellTypeConstants, xlTextValues)
If Not oDict.exists(rng.Value) Then oDict.Add rng.Value, rng.Value
Next
arrStrings = oDict.keys
End Sub


Was du mit dem Rest meinst: ?
Gruß aus’m Pott
Udo

AW: String finden und an variable übergeben
20.05.2009 22:06:36
Peter
Hallo Udo,
sorry, dass ich erst jetzt antworte.
Hört sich erstmal nicht schlecht an. Werde es am Freitag ausprobieren.
Hatte inzwischen eine umständlichere Lösung gefunden.
Was ich mit dem Rest meine?
Userform mit 15 Checkboxen. Beschriftung soll die gefunden Strings beinhalten.
Aber auch dafür habe ich einen Weg gefunden.
Meine Lösung:
Ich habe 15 leere Variablen.
Ich durchsuche die Spalte E nach Zahlen.
Alles was keine Zahl ist, wird einer variable zugeordnet, wenn dieser Text noch nicht vorkommt (kann auch 5 oder 6 mal vorkommen).
Danach habe ich alle 15 checkboxes mit if Abfragen so gestaltet, dass sie aktiv werden, wenn die Variable gefüllt ist und inaktiv, wenn die Variable leer ist.
Ist zwar etwas umständlich und ich hab den Code jetzt auch nicht hier, aber er funktioniert.
Wie gesagt, vielen Dank für Deine Hilfe.
Frage noch:
Wie würde ich die checkboxen mit dem Inhalt des arrays füllen können?
Gruß
Anzeige
AW: String finden und an variable übergeben
20.05.2009 22:29:43
Uduuh
Hallo,
was meinst du mit

die checkboxen mit dem Inhalt des arrays füllen 

?
Die Caption setzen?
etwa:
for i =0 to ubound(arrStrings)
with me.contols("Checkbox" &i+1)
.caption=arrstrings(i)
.enabled=true
End With
next
Gruß aus’m Pott
Udo

AW: Listbox statt Checkboxen macht vieles einfache
21.05.2009 15:00:54
Daniel
Hi
verwende doch einfach eine Listbox anstelle der 15 Checkboxen.
mit den Einstellungen MULTISELECT = TRUE und LISTSTYLE = 1 fmListStyleOption
sieht die Listbox fast so aus wie ne Ansammlung von Checkboxen, lässt sich auch genaus verwenden, ist aber in der Handhabung viel einfacher, weil du nur ein Steuerelement hast und nicht 15 (vorallem, wenn noch Code für die Steuerelemente benötigt wird).
Auch um das Ein- und Ausblenden der nicht benötigten Checkboxen brauchst du dich nicht mehr zu kümmern
Der Listbox kannst du dann einfach das Array aus Udos Makro zuweisen:

Sub strings()
Dim oDict As Object, rng As Range, arrStrings
Set oDict = CreateObject("scripting.dictionary")
For Each rng In Columns(5).SpecialCells(xlCellTypeConstants, xlTextValues)
If Not oDict.exists(rng.Value) Then oDict.Add rng.Value, rng.Value
Next
Listbox1.List = oDict.keys
End Sub


die Abfrage der Listbox erfolgt dann einfach in einer Schleife über die Listbox-Eigenschaften:
Listbox.Selected(i)
Listbox.List(i)
Gruß, Daniel

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige