Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listbox bedingt ausgeben - Ergänzende Frage

Listbox bedingt ausgeben - Ergänzende Frage
03.02.2019 16:11:52
Markus
Hallo an alle
Foren Mitglied Matthias war so freundlich und hilft mir mit einer Userform in der es darum geht Daten aus einem Tabellenblatt, bei dem sich die Spalten Belegung ändern kann, in ein Array zu lesen diese in eine ListBox zu laden und dort bestimmte Datensätze durch Filter und Auswahl Möglichkeiten auszuwählen., leider ist der Thread abgelaufen. Bevor ich all meine Fragen zum Code formulieren konnte.
Grüße
Markus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beitrag ohne Frage
03.02.2019 16:15:11
Hajo_Zi
nur wenige schaue in Deine Kopf um die Fragen zu sehen un d nur wenige schaue auf Deinen Rechner um die Datei zu sehen.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Hier ist die Frage
03.02.2019 16:23:18
Markus
Hallo Matthias
Danke nochmal für deine Hilfe, es funktioniert alles bestens.
So ich glaube ich habe das meiste verstanden (Googel) jetzt hab ich meine letzten (ich glaube vier) fragen: Sie sind im Code als Kommentar mit „*****“ gekennzeichnet und betreffen die Sub’s „UserForm_Initialize“ und „cmdUebernehmen_Click“. Ev. Wenn du die zeit hättest generell über die Kommentare dieser zwei Subs drüber zu lesen ob mein Verständnis des ganzen richtig ist. https://www.herber.de/bbs/user/127384.xls
Eine Prinzipielle Frage BEIM Programmieren: je mehr ich in eine Funktion auslagern, umso beanspruchender ist das Programm für den Rechner, da des Variablen geben muss die an die Funktion übergeben werden und in der Funktion gibt es dann ja auch nochmal variablen die diese werte entgegennehmen. Also mehr variablen insgesamt im Programm. Ist das richtig? Macht das viel aus?
Und ich hätte dann noch eine Frage: Ich versuche die Combobox 3 (Gruppe 1) umzugestalten so dass sie in der 1Spalte „Name Vorname“ , 2 Sp = „Leer“, 3 Sp =“Name“ ,4 Sp= „Vorname“, 5 Sp= ID. Dann blende ich spalte 3 und 4 aus. Ein ein kleinwenig hab ich schon geändert ( Spalten Belegung für 3,4,5) aber das unten erklärte zählen macht mir Probleme und ich weis nicht was der beste weg ist um die Namen Zusammensetzung hinzubekommen einfach die # aus den in dem Code abschnitt verwendetet Dictionary durch ein Leerzeichen ersetzen?
Mir liegen da zwei Gedanken zu Grunde. Ich will beim Auswählen den Namen inkl. Vornamen stehen haben. Und das zweite ist, ich hätte gern das in der lehren Spalte „2“ die Anzahl steht wie oft die Person in der Liste vorkommt zwecks Einfachheit für im Bereich E bis G. Bei jedem öffnen des DropDown der Combox sollen sich dieser Wert aktualisieren.
Hast du da vielleicht ein paar Wegweiser für mich wie ich das am geschicktesten/Resursensparrensten Einbau oder sogar einen bsp. Code wie ich das zählen gut hinbekomme. Das ist dann meine letzte frage an dich.
Grüße Markus
Anzeige
03.02.2019 16:29:49
Listbox bedingt ausgeben - Ergänzende Frage
Tut mir leid dass die Frage nicht gleich drin stand aber es sollt die Einleitung werden und irgendwie hat sich der Rest des Textes Verflüchtigt.
Grüße Markus
AW:
03.02.2019 20:01:11
Listbox bedingt ausgeben - Ergänzende Frage
Moin!
Also anbei mal die Datei zurück. Habe die Punkte mal erläutert, wobei ich nur 2 gefunden habe. Der Res hat so gepasst.
https://www.herber.de/bbs/user/127391.xls
Zu den anderen Fragen mal meine Meinung (gibt da vermtl. auch andere Ansichten).
1. Je größer/umfangreicher die Funktion desto rechenintensiv.
Würde ich mit jein beantworten. Es kommt immer auf die Funktion an. Dabei hängt es mit von der Art der Variablen, deren Inhalt und den Rechenoperationen ab. Zudem wird dein Code ja peim Übersetzen vom Compiler eh noch optimiert. Und in der heutigen Zeit, haben die Rechner soviel Speicher (auch Arbeitsspeicher), dass 2 Variablen mehr nicht ins Gewicht fallen - außer du programmierst für alte Rechner bzw. brauchst kompakten Code. Bzgl. des Speicherbedarfs, schaue mal hier:
https://www.vba-tutorial.de/variablen/datentypen.htm
Zudem gibt es ja noch die Möglichkeit Variablen ByRef zu übergeben. https://de.wikibooks.org/wiki/VBA_in_Excel/_ByRef_und_ByVal Da arbeitest du mit der "Originalvariable" aus dem aufrufenden Code weiter.
2. Namen und #
Du könntest beim dict schon die # ersetzen. Das "Problem" ist aber, wenn du Doppelnamen mit Leerzeichen hast. Dann könnte das Ungenauigkeiten geben. Deshalb nutze ich da ein Zeichen, was im Namen nicht vorkommt. Das kannst das beim Eintragen auch ersetzen. Habe dir das im Code mal ergänzt.
3. Das mit den Anzahl habe ich dir mit reingebaut. Wenn du vorher selber basteln willst, nimmt hier kurz eine Anleitung (lösung wäre ja anbei :-) . NImm das Enter Ereignis der Combo. Dann erstmal die Namen aus der CB3 erfassten und mit der Liste abgleichen. Die Anzahl schreibst du dann in die Liste der CB3. Wenn das Enter Ereignis abgearbeitet ist, wird es angezeigt. Zum Erfassen der Namen kannst du wieder ein Dictionary nehmen oder auch ein Array. Je nach dem müsste du dann bei durchgehen der Liste den Namen im Array suchen oder beim dict. einfach zugreifen. Wenn du ihn gefunden hast, den Zähler erhöhen.
Wenn noch mehr unklar ist, einfach nochmal melden.
VG
Anzeige
AW:
05.02.2019 18:52:32
Listbox bedingt ausgeben - Ergänzende Frage
Hallo Matthias 😊
Danke für die Erklärungen und danke für die Antworten für meine Fragen zum Code.
Bei dem zählen habe ich es eigentlich gemeint das ich die Einträge im Tabellenblatt zählen will nicht in der Listbox. (Hab mich schlecht ausgedrückt Sorry). Also wie oft die Person in bestimmten Spalten vorkommt deswegen hatte ich auch die Namen aus Gruppe 1 in den spalten E bis G im Tabellenblatt liste Platziert, um es besser testen zu können.
Die Combobox Gruppe 1 wird beim Inazialisieren der Userform gefüllt und beim Enter Ereignis wird nur die Anzahl ergänzt, wenn die Person nicht vorkommt dann „nixhts“ oder „0“ bzw. es kann auch neu gefüllt werden aber es müssten dann alle aus Gruppe 1 in der Combobox drin stehen auch die die nicht in der Tabelle vorkommen sind eben mit keiner Zahl oder „0“.
Aber den Code den du geschrieben hast, denn kann ich auch sehr gut gebrauchen. Wenn ich die Userform mal weiter ausbauen wollen würde. Danke Dafür. Das ist jetzt etwas dreist von mir aber hättest du vielleicht noch ein bsp. Mit zählen im Tabellen Blatt? Bzw es müsste doch fast dasselbe sein nur das das Übergebene Array die Daten aus dem Tabellenblatt enthält oder nicht?
Danke für alles 😊
Grüße Markus
Anzeige
AW:
06.02.2019 11:38:06
Listbox bedingt ausgeben - Ergänzende Frage
Moin!
Also m.E. werden alle aus Gruppe 1 am Anfang in die CB3 eingtragen. Das Cb Enter Event mal so abändern.
Private Sub ComboBox3_Enter()
Dim quelle As Object
Dim namen
Dim daten
Dim zeile As Long, ende As Long
Dim zusanam As String 'könnte auch weg und im Code gleich durch den eintrag ersetzt werden, so  _
kann man aber immer testen, was er anzeigt
Set quelle = Worksheets("Liste")
Set namen = CreateObject("Scripting.Dictionary")
ende = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
daten = quelle.Range("A1:F" & ende)
'die Namen aus der Combosammeln
For zeile = 0 To Me.ComboBox3.ListCount - 1
'hier beachten, die Zählung beginnt bei 0 in der LIste, beim Befüllen hatte ich das Array von 1  _
to 5 angelegt, so dass man es besser lesen kann
zusanam = Me.ComboBox3.List(zeile, 2) & "#" & Me.ComboBox3.List(zeile, 3)
namen.Add zusanam, 0
Next
'jezt die Liste durchgehen
For zeile = 4 To ende
zusanam = daten(zeile, 5) & "#" & daten(zeile, 6)
If namen.exists(zusanam) Then namen(zusanam) = namen(zusanam) + 1
Next
'jetzt eintragen, dabei stehen ja die Namen schon in der Reihenfolge
For zeile = 0 To Me.ComboBox3.ListCount - 1
Me.ComboBox3.List(zeile, 1) = namen.items()(zeile)
Next
End Sub

VG
Anzeige
AW:Listbox bedingt ausgeben - Ergänzende Frage
06.02.2019 14:27:22
Markus
Super vielen Dank für den Code und noch mal Danke für alles andere wo du mir weitergeholfen hast. Du und dieses Forum seit echt Spitze. Aber vor allem Du. :) Echt Großes DANKESCHÖN!!!
Grüße
Markus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige