Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
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 füllen , bedingt ausgeben

ListBox bedingt füllen , bedingt ausgeben
13.01.2019 15:02:17
Markus
Hallo an alle
Ich baue eine Userform und hab ziemliche Probleme damit da meine VBA Kenntnisse mehr als bescheiden sind. Es wäre toll, wenn mir jemand weiterhelfen könnte.
Ich habe mir etwas Code zusammen gebastelt/Kopiert aber er tut nicht das was er soll:
  • 
    Private Sub cmdUebernehmen_Click()
    'dimension the variable
    Dim addme As Range
    Dim x As Integer, Ck As Integer
    'set variables
    Set addme = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    Ck = 0
    'run the for loop
    For x = 0 To ListBox1.ListCount - 1
    'add condition statement
    If Me.ListBox1.Selected(x) Then
    Ck = 1
    addme = Me.ListBox1.List(x)
    addme = Me.ListBox1.List(x)
    addme.Offset(0, 1) = Me.ListBox1.List(x, 1)
    addme.Offset(0, 7) = Me.ListBox1.List(x, 7)
    addme.Offset(0, 8) = Me.ListBox1.List(x, 8)
    addme.Offset(0, 21) = Me.ListBox1.List(x, 5)
    addme.Offset(0, 22) = Me.ListBox1.List(x, 4)
    Set addme = addme.Offset(1, 0)
    'clear the selected row
    ListBox1.Selected(x) = False
    End If
    Next x
    'send a message if nothing is selected
    If Ck = 0 Then
    MsgBox "Es wurde keine auswahl getroffen"
    End If
    End Sub
    

  • Listbox füllen: Ich will Daten aus Tab2 mit Hilfe einer mehrspaltigen ListBox (Multiselect) in Tab1 eingeben können in einer neuen Zeile Unterhalb der Aktiven Zeile. Allerdings soll die Listbox eine andere Spaltenreihenfolge haben als die Quelle auf Tab2. Die Reihenfolge der Quelle darf ich nicht ändern. Bezogen auf Tab2 wäre die Reihenfolge in der Listbox D , H , G , F , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y
    Auswahl der Listbox ausgeben: Nach Auswahl in der Listbox muss die Ausgabe an den Aufbau der Tabelle auf Tab1 angepasst sein. Es ist so dass es in Tab2 Datenzeilen gibt, die zusammengehören. Diese müssten dann auf Tab 1 in dieselbe Zeile geschrieben werden, wenn sie dieselbe ID habe. Ich habe in der Bsp. Datei die ersten zwei Zeilen von Tab 1 Manuel gefüllt, um es besser klarzumachen.
    https://www.herber.de/bbs/user/126712.xlsm
    Es wäre echt nett, wenn sich das jemand anschauen könnte. Jeddes Stück Code hilft mir schon.
    Grüße Markus

    30
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    13.01.2019 17:28:05
    Markus
    Bzw. Eine Generelle frage zu dem Code den ich jetzt habe. Er müsste die in der Liste ausgewählten Datensätze am Ende der Liste eintragen. Zwar ohne das zusammenfassen der Zusammengehörenden Datensätze aber es ist schon wenigstens etwas. Tut er auch, aber nicht in die richtigen Spalten und ich verstehe nicht warum. Es ist alles verschoben.
    Kann mir jemand sagen woran das Liegt?
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    14.01.2019 18:53:25
    Matthias
    Moin!
    Kurzform: Weil du es so im Programm vorgegeben hast. :-)
    Langform: Der Offset errechnet sich ab der nächsten Zeile. Für die Straße müßtest du also offset 8 und nicht 7 nehmen. Für STD also 9 statt 8 und beim Name 20 statt 21 usw. Zudem ist beim Namen die falsche Spalte aus der Liste der Listbox drin. Da beginnt die Zählung bei 0. Da müsste also .list(x,4) stehen.
    Allgemein.
    Wenn du in der Listbox eine andere Darstellung als im Blatt haben willst, musst die die selbständig einlesen. Bei dir erfolgt das ja über einen Bereichsnamen. Dazu ein Array dimensionen (Zeilen wie in der Vorgabe und Spalten so wie in der LIstbox). Dann gehst du deinen Bereich im Blatt zeilenweise durch und liest die gewünschten Daten in das Array. Das übergibst du dann als .list an die Listbox.
    Für die Eintragungen soll er nur zusammgehörende und markierte eintragen oder? DAzu in der Schleife durch alle Listboxenträge noch eine Schleife machen. Darin suchst du dann die anderen Werte mit der gleichen id - da dann den selben Code rein incl. unselecten.
    Das war jetzt auf die schnelle nur mal theoretisch wie es gehen könnte. Wenn das nicht hilft einfach nochmal melden. Da wäre dann aber eine Mappe mit einer Userform mit der gewünschten Datenreihenfolge hilfreich.
    VG
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 16:07:05
    Markus
    Hallo Matthias
    Dank deiner Erklärung konnte ich zumindest dafür sorgen das die richtigen Spalten aus der ListBox in den richtigen Spalten in der Tabelle landen. Vielen Dank dafür. Ich hab es leider immer noch nicht hinbekommen die ListBox richtig zu befüllen. Ich finde die Gaze zeit nur Beispiele wie man eine Tabelle in ein Array verwandelt aber nicht wie man das mit vertauschten Spalten macht. Deine Erklärungen haben mich auf eine glaube ich bessere Idee gebracht für die Gestaltung des ganzen aber jetzt ist es für mich noch schwerer umzusetzen.
    Ich habe die ListBox in ein MultiPage Steuerelement gepackt mit zwei Pages in der ersten Page ist eine ListBox in der die Spalten: „Gruppe“, „STD Summe“ , „ID Nr“ und dann immer neben einander „BPIM“ , „Adressen“ , „STD“ mit der selben ID.
    Auf der zweiten Page sollen in einer zweiten ListBox die Adressen der in der ersten Listbox gewählten Personen enthalten sein. Von dort aus kommen sie ins Tabellenblatt außer eine von den Adressen ist selektiert indem fall wird sie ausgelassen.
    Könntest du mir vielleicht helfen das Umzusetzen oder einen Teile davon? Ich bin etwas überfordert ,trotz deiner Guten Erklärung.
    https://www.herber.de/bbs/user/126778.xlsm
    Grüße Markus
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 16:20:12
    Markus
    Verstehe ich es richtig das ich in die erste Listbox auf Page1 alle Daten laden muss (Spaltenbreite bei nicht benötigten auf 0 setzen)und sie dann in die Zweite zu Übernehmen oder ist es besser die listboxen separat von einander zu füllen. Jeweils von der Quelle.
    Ich habe hier auf der Seite ein Makro gefunden das Spalten vertauscht allerdings mit Hilfe eines Temporären Tabellenblattes. Dinge dasselbe auch in ein Array um es dann zum füllen der listbox zu verwenden. Und wenn ja wie müsste ich es umschreiben. Ich verstehe das Makro leider nur halb.
    Sub SpaltenAnordnungAendern2()
    'Kopiert Spalten in der angegeben Reichenfolge in Tabellenblatt Temp
    'es wird vorher geprüft ob die Spaltenreihenfolge der von der Angabe im Code Abweicht
    'Quelle: https://www.herber.de/forum/archiv/1524to1528/1525433_Spaltenreihenfolge_pruefen_gegebenenf_umsortieren.html
    Dim nurDie, welche As Range, c As Range, dorthin&(), i, fehler As Boolean, fehler2 As Boolean
    Dim ok As Boolean
    nurDie = Array("Gruppe", "Personal Nr", "Name", "STD Summe", "HSKF", "BPIM", "Adresse", "STD",  _
    _
    "Mo von", "Mo bis", "Di von", "Di bis", "Mi von", "Mi bis", "Do von", "Do bis", "Fr von", "Fr  _
    bis", "Sa von", "Sa bis", "Text", "Art")
    ReDim dorthin(1 To UBound(nurDie) + 1) ' ab 1 = Spaltennummer
    Set welche = Intersect(Range("3:3"), ActiveSheet.UsedRange)
    For Each c In welche
    i = Application.Match(c.Value, nurDie, 0)
    If IsNumeric(i) Then dorthin(i) = c.Column _
    Else MsgBox c.Value & " nicht in Neuer Tabelle enthalten.": fehler = True
    Next
    ok = True
    For i = 1 To UBound(dorthin)
    If dorthin(i) = 0 Then
    MsgBox nurDie(i - 1) & " nicht belegt.": fehler2 = True
    ElseIf dorthin(i)  i Then ok = False
    End If
    Next
    If ok And Not fehler Then MsgBox "Alle Spalten stimmen überein.": Exit Sub
    If fehler Then MsgBox "Fehler: was tun?"   ' *** der Fehler kann toleriert werden
    If fehler2 Then MsgBox "Fehler2: was tun?": Exit Sub ' *** dieser nicht.
    ' Das Blatt "Temp" muß existieren...
    ' Sheets("Temp").Cells.Clear ggf. Kommentarzeichen entfernen
    For i = 1 To UBound(dorthin)
    ActiveSheet.Columns(dorthin(i)).Copy Sheets("Temp").Columns(i)
    Next
    End Sub
    

    Grüße Markus
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 16:45:58
    Matthias
    Moin!
    Puuuh! Also meine persönliche Meinung ist, nimm nur ein Listbox. Macht keinen Sinn zweimal die Daten einzulesen und unterschiedlich darzustellen. Abgesehen davon habe ich noch nicht ganz verstanden, was die 2 Listboxen so machen sollten.
    Würde mal deine Ausgangsdatei / Userform dahingehend abwandeln. Kopiere den Code aus deiner neuen Mappe aber mit rein. Du könntest das auch mit dem temporären Blatt machen und die Spalten erst kopieren, ich mache das lieber anders.
    Dauert aber ein paar Minuten.
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 19:44:40
    Markus
    Hallo, ich versuch mal zu erklären was ich mir bei den zwei ListBoxen gedacht hab.
    ListBox1 wird mit den Daten gefüllt sichtbar sind „Gruppe“, „STD Summe“ , „ID Nr“, „Name“ „BPIM1“ , „Adressen1“ , „STD1“ „BPIM2“ , „Adressen2“ , „STD2“ usw. je nachdem wie viele zusammenhängende Adressen es sind. Die dort in einer Zeile stehen sollen, dadurch werden es in ListBox1 weniger Zeilen und es müsste übersichtlicher sein. Da sich die Namen untereinander nicht wiederholen. Die Zeitangaben sind zwar drinnen aber nicht sichtbar (Spaltenbreite 0).
    ListBox2 übernimmt nur die Auswahl aus Listbox1 und dient zum weiteren Einschränken und gleichzeitig zeigt sie die Fehlenden Zeitenangaben an. Aber eben nur für die Personen, die in ListBox1 gewählt wurden. Deswegen dachte ich mir sie könnte nach Auswahl in ListBox1 aus den nicht sichtbaren Spalten von ListBox1 gefüllt werden. Hab die Struktur für eine Person in das Tabellenblatt Info Manuel eingetragen, um es zu verdeutlichen
    Im Prinzip werden in 80%der Fälle alle Adressen einer Person benötigt. 15% der Fälle werden bestimmte Adressen einer Person benötigt. Naja, und in 5% der Fälle werden zusammengesetzte Daten Sätze von 2 Personen benötigt diese 5% werden ich dann Manuel eingetragen. Deswegen hat die Liste in der Tabelle auch eine zweite “Name“ „ID Nr „ Spalte.
    Ich hab da alles Reingepackt, was ich hatte aber ich geb dir recht mir wäre es auch lieber zwischen Tabellenblatt: https://www.herber.de/bbs/user/126784.xlsm
    Grüße
    Markus
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 20:26:32
    Matthias
    Moin!
    Habe mir das mal angeschaut. Man könnte die Listbox1 in meiner Datei ähnlich anpassen, dass jede Person nur einmal erscheint. Beim Eintragen würde man dann die Daten aus dem Blatt nochmal nehmen und alle anderen Adressen der Person ergänzen.
    Warte mit dem Anpassen aber noch bis du dir meine Datei mal angeschaut hast und noch ergänungen zu meinen Fragen bzw. eigene Fragen hast.
    Ich poste den Beitrag mal unter beide Beiträge von dir. Brauchst nur auf einen Antworten. Bei dem würde ich dann weitermachen - sonst kommen wir durcheinander. :-)
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 17:45:38
    Matthias
    Moin!
    Also hier mal die Anpassung. Die Listbox wird beim initialisiern der Userform gefüllt (dynamisch - der Bereich braucht nicht angepasst zu werden). Habe auch ein paar Kommentare eingebaut. Da ich die xlsm zur xls konvertieren musste, gibt es im VBE zwei Karteileichen und ich musste Tabelle 3 und 4 nehmen. Schau es dir einfach mal an.
    https://www.herber.de/bbs/user/126781.xls
    Mal noch eine Frage zu den zusammenhängenden Daten. Wenn ich die zweite Anna Baum auswähle, müssten ja die Daten der ersten Zeile auch mit rein. Müssen die dann an erster Stelle eingetragen werden oder ist das egal. Und Wenn ich nur die zweite Anna nehme aber die erste nicht anklicke, muss die dann auch genommen werden (da selbe Nummer) oder nicht, da nicht angeklickt. Das wäre dann kein Problem, es mit einzubauen, man müsste es halt nur wissen.
    VG
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 19:51:38
    Markus
    Hallo
    Ich hab die Antwort nicht gesehen un in der Zwischenzeit auf den vorherigen Beitrag geantwortet:
    Ich schau mir die Datei gleich an.
    Danke auf jeden fall für die Hilfe.
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 20:26:56
    Matthias
    Moin!
    Habe mir das mal angeschaut. Man könnte die Listbox1 in meiner Datei ähnlich anpassen, dass jede Person nur einmal erscheint. Beim Eintragen würde man dann die Daten aus dem Blatt nochmal nehmen und alle anderen Adressen der Person ergänzen.
    Warte mit dem Anpassen aber noch bis du dir meine Datei mal angeschaut hast und noch ergänungen zu meinen Fragen bzw. eigene Fragen hast.
    Ich poste den Beitrag mal unter beide Beiträge von dir. Brauchst nur auf einen Antworten. Bei dem würde ich dann weitermachen - sonst kommen wir durcheinander. :-)
    VG
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 21:45:55
    Markus
    Also der Füll Mechanismus ist echt toll Danke Sehr 😊
    gäbe es die Möglichkeit das er sich nach den Spalten Überschriften richtet, so ähnlich wie der Code mit dem Temporären Tabellenblatt nur eben ohne Tabellenblatt? Der sinn wäre das ich ihn gern auch für andere Tabellen einsetzen will zbsp. zum gezielten auslesen von Tabellen bei denen sich die Spaltenanzahl ändert. Die zweite Sache die mir beim Probieren aufgefallen ist wäre, bei den Zeitangaben sind ja manche Felder leer in der ListBox werden sie die lehren Felder durch 00:00 ersetzt. Kann man da was dagegen machen zbsp dass die Zeiten als Text behandelt werden oder so. Dann würde es bei einem Leerzeichen in einem von den leeren Zeitfeldern nicht zu dem Typ Unverträglichkeit Fehler kommen.
    Zu deiner Fragen:
    Also wenn es eine Listbox ist und die Namen Mehrmals untereinander stehen und wenn nur ein Anna Baum Eintrag angeklickt wird dann wäre es gut, wenn eine JA/Nein Box fragt ob alle Anna baum eintrage übernommen werden sollen. Wenn Ja dann sollten sie in der Reihenfolge übernommen werden wie sie in der Liste stehen, wenn nein dann nur das was angeklickt wurde.
    Ich habe nicht ganz verstanden wie du das in deinem letzten Beitrag meinst. Es wäre für mich sehr hilfreich die Personen und deren Andresse in einer Zeile zuhaben und diese auszuwählen und erst dann eventuell irgendeine der Adressen, die sie haben weglassen zu können. Mir ist dafür nur eben die zweite ListBox eingefallen. Aber ich bin da für jeden Vorschlag offen. Dann ist aber die Antwort auf deine Frage umgekehrt. Dann müssten die Adressen einer Person Standardmäßig alle übernommen werden in der Reichenfolge wie sie in der liste stehen und nur durch Intervention des Anwenders kann zbsp die erste oder zweite Adresse von Anna Baum weggelassen werden. Sofern das machbar ist?
    Ich habe deinen Code in diese Mappe hier übernommen und ich habe den Code mit dem Temporären Tabellenblatt in Modul 1 gelassen falls du was davon brauchen solltest)
    https://www.herber.de/bbs/user/126789.xlsm
    Vielen dank für deine bisherige Hilfe
    Grüße Markus
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 22:21:40
    Matthias
    Moin!
    Wird erst morgen was - muss noch ein wenig das Layout überdenken. Noch ein paar Fragen:
    - brauchst du die Zeiten in der Userform bzw. beim Eintragen ( in der LIste tauchen die ja nicht auf) oder werden die später wo anders eingetragen? Geht drum ob man sie weglassen bzw. verbergen kann - in der UF.
    - sind es max. 4 verschiedene Adressen oder können es auch mehr sein?
    - was ist dir lieber: alle Adressen in einer Zeile und dann später nochmal entsprechende selektieren (ggf. mit neuer LB oder anders) oder so wie jetzt und man muss die Namen (auch mehrfach je nach Adresse) gezielt anklicken?
    Würde danach mal die UF und den Code umbasteln. Je nachdem würde sich auch das Einlesen ändern. Das mit den Spaltennamen wäre kein Problem und das mit den leeren Daten habe ich schon geändert.
    VG
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    16.01.2019 07:15:29
    Markus
    Guten Morgen
    Also mir ist definitiv immer “ BPIM, Adresse ,STD“ in einer Zeile für die gleiche Person lieber. Danach nochmal selektieren (du richtest dich nach der ID Nr beim zusammenfassen oder?)
    Es wäre gut wenn nach der Personen Auswahl die Adressen standardmäßig alle selektiert sind und eher die Selektierung aufheben muss wenn man eine von den Adressen nicht braucht. Bzw das selektiert was man nicht braucht. Vom Layout wäre die erste Auswahl die Adressen neben einender und in der zweiten können sie dann schon unter einander sein und daneben die Zeiten.
    So in der Richtung wie es im Tabellenblatt Info dargestellt ist
    Frage: Ginge es das der Name in zwei Spalten anhand des Leerzeichens aufgeteilt wird beim einlesen und beim schreiben wider zusammengesetzt. Das wäre für die Zukunft hilfreich um die selbe Userform für andere Tabellen zu nutzen es muss aber nicht sein wenn es schwer umzusetzen ist.
    Die Zeiten würde ich schon brauchen in die Liste werden zwar nur die jeweiligen Stunden pro Adresse eingetragen aber sie werden dann wo anders gebraucht. Und sie dienen auch zum nachschauen sonst müsst ich wegen den Zeiten immer ins Daten Tabellenblatt schauen. Sie können aber als Text formatiert sein. Und sie müssen nicht bei der ersten Auswahl sichtbar sein dort wo man die Person und Adressen sehen kann und nach Person wählt. Bei der zweiten Auswahl reicht da auch aus. Sonst geht es sich mit dem platz schlecht aus glaub ich.
    Puuh guter Hinweis Danke, also in der Regel sind es max 4 verschiedene Adressen aber theoretisch könnten es auch mehr sein Ev. wäre es gut wenn in der Liste eine zusätzliche Zeile für die zbsp 5 und 6 Adresse erstellt wird was die User form angeht mehr als 6 werden es sicher nicht werden.
    Danke für deine bisherige Hilfe und Grüße
    Markus
    Anzeige
    AW: ListBox bedingt füllen , bedingt ausgeben
    16.01.2019 09:33:40
    Matthias
    Moin!
    Werde nachher mal was basteln.
    Bzgl. der Trennung von Name und Vorname nochmal. Also im Blatt soll er zusammenstehen und nur beim SChreiben getrennt sein? Kann man machen. Da wär es aber ggf. besser, wenn du die Daten auch / schon in der Tabelle getrennt hast. Problem könnte sonst sein, dass bei einem Doppelnamen ohne Bindestrich ggf. falsch getrennt wird.
    Ih melde mich dann nochmal.
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    16.01.2019 10:27:41
    Matthias
    Moin!
    Werde nachher mal was basteln.
    Bzgl. der Trennung von Name und Vorname nochmal. Also im Blatt soll er zusammenstehen und nur beim SChreiben getrennt sein? Kann man machen. Da wär es aber ggf. besser, wenn du die Daten auch / schon in der Tabelle getrennt hast. Problem könnte sonst sein, dass bei einem Doppelnamen ohne Bindestrich ggf. falsch getrennt wird.
    Ih melde mich dann nochmal.
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    16.01.2019 12:58:54
    Markus
    Hallo Matthias
    Hab die Nachricht zwei mal geschrieben Antworte bitte auf die untere von den beiden. Zwei Nachrichten Tiefer Es wäre gut wenn diese Beiträge editierbar wären :(
    Also mir ginge es darum das beim einlesen in das Array die Namen getrennt werden. Um ein Array zu haben das diese Trennung beinhaltet das ich dann auch anderweitig verwenden kann. In der ListBox kann es auch getrennt angezeigt werden und erst beim schreiben in das Tabellenblatt müsste es wider zusammengesetzt werden da die Tabelle leider keine zwei Spalten dafür hat.
    Also auf den Bindestrich in der Tabelle bei Doppelnamen kann man siech eigentlich 100% verlassen. Das sollte kein Problem sein. Ich Kann leider weder an der Zieltabelle noch an dem Aufbau der Quelltabelle was ändern weil die Vorgegeben sind.
    Aber nur wenn es nicht all zu viel Probleme bereitet. Wenn es dir viel Arbeit macht dann Lass es bitte. Ach ja, ich hab aus versehen in der Bsp. Mappe denn Vornamen und Familiennamen vertauscht der Familienname gehört zuerst das sollte 2Baum Anna" in der Quelle stehen. Das tut mir leid.
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    16.01.2019 07:29:23
    Markus
    Wenn dir das irgendwie hilft, in der letzten Datei sind zwei verschiedene Userformen die beide so gestaltet sind wie du es in deiner letzten Datei gemacht hast mit einer ListBox für die Überschrift und einer für die Daten.
    Userform1 hat eine MultiPage mit zwei Pages ist für das zweistufige auswählen angepasst. Da geht das einlesen auf MultiPage/Page1 und das schreiben von MultiPage/Page2 es fehlt der zwischenschritt.
    Userform2 ist nur mit einer Page in die gelesen und von der geschrieben wird.
    Nochmal der link: https://www.herber.de/bbs/user/126789.xlsm
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    15.01.2019 22:01:57
    Markus
    Ich habe vor die Ansicht dann irgendwann nach den Gruppen zu Filter bzw, die Ansicht irgendwie zu begrenzen über die Kombobox im Formular so das mir nur eine oder alle Gruppen angezeigt werden. Es gibt 14 Gruppen die alle als Kürzel entweder Zahlen oder zwei Buchstaben haben. In der Testdatei sind sie glaub ich von 1-3
    Das musst du jetzt nicht auch noch machen ich will es nicht übertreiben. Ich sag es nur damit du vielleicht Rücksicht darauf nimmst bei deinen Überlegungen. Natürlich wäre ich für einen Tipp zu dem Thema dankbar aber es muss nicht sein.
    Grüße Markus
    PS. danke fürs Kommentieren vom Code davon profitiere ich sehr stark
    AW: ListBox bedingt füllen , bedingt ausgeben
    16.01.2019 12:54:01
    Markus
    Hallo Matthias
    Hab die Nachricht zwei mal geschrieben Antworte bitte auf die untere von den beiden.
    Also mir ginge es darum das beim einlesen in das Array die Namen getrennt werden. Um ein Array zu haben das diese Trennung beinhaltet das ich dann auch anderweitig verwenden kann. In der ListBox kann es auch getrennt angezeigt werden und erst beim schreiben in das Tabellenblatt müsste es wider zusammengesetzt werden da die Tabelle leider keine zwei Spalten dafür hat.
    Also auf den Bindestrich in der Tabelle bei Doppelnamen kann man siech eigentlich 100% verlassen. Das sollte kein Problem sein. Ich Kann leider weder an der Zieltabelle noch an dem Aufbau der Quelltabelle was ändern weil die Vorgegeben sind.
    Aber nur wenn es nicht all zu viel Probleme bereitet. Wenn es dir viel Arbeit macht dann Lass es bitte. Ach ja, ich hab aus versehen in der Bsp. Mappe denn Vornamen und Familiennamen vertauscht der Familienname gehört zuerst das sollte 2Baum Anna" in der Quelle stehen. Das tut mir leid.
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    16.01.2019 16:44:31
    Matthias
    Moin!
    ALso hier mal deine Datei zurück. Habe das mit dem Namen trennen noch nicht drin. Schau es dir erstmal so an. Mit getrennten Namen wird das Ganze noch breiter und unübersichtlicher - wäre aber kein Problem. Auch wenn du es nicht ändern kannst, sollten die Daten immer in die kleinsten Werte zerlegt werden. Ist bei der Adresse genauso. WEnn du nur die Adressen aus den Daten nimmst, ist immer eine Hausnummer dabei. Das macht das ganze beim Suchen etwas komplizierter.
    https://www.herber.de/bbs/user/126824.xls
    Erklärung:
    AUf Grund deiner Anforderung habe ich die erste UF weitergenutzt (mit den 2 Pages). Habe die LB Nummerierung geändert, damit es einheitlich ist. LB1 und 3 sind die Überschriften und 2 und 4 die Daten. Dann gibt es noch 5 und 6. Die sind zum "Datensichern" für suchen / Auswahl da. Deine beiden COmbos habe ich auch gleich mit befüllt. Da ist aber keine Suche beim Change hinterlegt (bzgl. der Adressen müsste man das noch umbauen - Hausnummer). Die Listboxen auf Page1 sind vom Aufbau auch anders als auf Page2. Es können bis zu 6 Adressen erfasst werden. Allerdings hatte ich noch keine Lust das auch bei der Tabelle für den Eintrag anzupassen. Dort gehen nur 4 Adressen rein. Auswahl und Eintragen sollten funktionieren.
    Mit Kommentaren war ich jetzt glaube ich sparsamer - hätte das aber ggf. überfrachtet. Schau es dir mal an. Bei Fragen oder Unklarheiten einfach melden. Bzgl. der Adresse mal prüfen, wie du es haben willst - in LB2 und 4 oder nur in der 4. Wenn was nicht passt oder anders soll, ebenfalls melden.
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    17.01.2019 23:06:43
    Markus
    Hallo Matthias
    Das schaut schon echt Super aus vielen Dank ich bin noch am Verstehen lernen des Codes.Ein -zwei Kommentare wären noch echt toll, wenn du die Zeit hättest.
    Wenn ich das richtig ersteche ist LB5 und LB6 Quasi der Speicher für den Filter aus den CoboBoxen. Auf die Idee wäre ich von allein wahrscheinlich nicht gekommen. Hast du da vielleicht noch etwas Zeit mir da doch zu helfen diese Filter umzusetzen? Die Adressen müssen jetzt nicht unbedingt von den Hausnummern getrennt sein so würde es mir auch schon reichen. Es wäre vielleicht nur gut, wenn sie alphabetisch wären.
    Ich habe das Userform ausgiebig getestet und mir sind zwei Kleinlichkeiten aufgefallen im Code fürs einlesen kann man die Startspalten Nummer angeben. Das funktioniert irgendwie nicht, wenn ich zbsp. die leeren Spalten links von der Datentabelle weglösche und im Code die Spalte 1 angebe dann kommt ein Fehler (Spalte null anzugeben habe ich auch schon probiert. Geht auch nicht.
    Und die Spalte Text wird als Zeitangabe formatiert, wenn man da was reinschreibt dann kommt ein Typ Unverträglichkeit Fehler. Wäre es möglich das man das Übernehmen auch schon von der ersten Page1 aus auslösen kann?
    Mir würde nur noch das eintragen der 5 und 6 Adresse in einer zweiten Zeile fehlen. Beim testen ist mir heut aufgefallen das es recht unpraktikabel ist, wenn der Eintrag immer unten an die Tabelle angehengt wird. Ich habe deswegen 3 OptionBottens über der übertragenen Taste gemacht. Die sollen als Einstellmöglichkeit dienen wo die Daten eingetragen werden.
    Der Linke = in neuen Zeile unterhalb der derzeit aktiven Zeile in der Tabelle.
    Der Mittler = ans Ende der Tabelle
    Der Recht = Zielzellen von aktiver Zeile werden überschrieben: Bei einer Person mit Mehr als 4 Adressen müsste da dann noch eine Zeile darunter erstellt werden. Könntest du diese drei Option Botton berücksichtigen?
    Ich würde dir gerne zum Dank ein-zwei Kästen Bier ausgeben wenn du mir einen PayPal link oder noch besser eine PaysafeCard Verbindung zukommen lassen würdest. Du Hast mir mit der Sahe wirklich sehr geholfen.
    Frische Datei: https://www.herber.de/bbs/user/126889.xls
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    18.01.2019 07:02:29
    Markus
    Aber wenn die Sachen zu aufwändig sind reicht mir auch nur das eintragen in zwei Zeilen wenn es mehr als 6 Adressen sind. Und das mit dem Namen aufteilen beim einlesen und wieder zusammensetzen beim Schreiben. Ev. vielleicht ein paar Kommentare dann kann ich mich für den Rest besser durch Googln.
    In jedem fall Danke für alles.
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    18.01.2019 09:17:35
    Matthias
    Moin!
    Muss mal schauen, wann ich dazu komme. Kann nicht versprechen, dass es heute wird. Da der Threat schon etwas älter ist, ggf. in 2 oder 3 Tagen einen neuen starten. Ansonsten kann man da nichts mehr anhängen.
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    18.01.2019 11:42:42
    Matthias
    Noch eine Nachfrage, habe mit den vorletzten Post nochmal durchgelesen. Was soll genau beim Rechten Optionbutton passieren? Die aktuelle Zeile überschreiben und die die folgenden auch (kann ja passieren, wenn man mehr als einen Wert ausgewählt) oder nur die aktuelle Zelle und die anderen rutschen dann runter?
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    18.01.2019 12:41:55
    Markus
    Also wenn das geht dann wäre mir natürlich am liebsten das die Aktuelle überschrieben wird. aber nur die Zellen die gefüllt werden sollen Zwischen Gruppe und der ersten adresse stehen dann daten die nicht gelöscht werden sollen und der Rest rutscht runter sollte mehr als eine Person ausgewählt sein.
    Oder sollte es einfacher Umzusetzen sein, dann das bei Auswahl des rechten nur eine Person ausgewählt werden kann. Aber sollte diese dann mehr als 4 Adressen haben dann müssten die anderen Zeilen doch wider runterrutschen.
    Solltest du das mit den trennen der Namen beim einlesen Umsetzen, könntest du mir vielleicht in der Userform vielleicht noch bei der Gelegenheit eine zusätzliche zweispaltige Kombobox machen in die nur die Namen aus gruppe "1" eingelesen werden. Nur wenn es leicht geht ich wollt dann in weiterer folge was damit machen.
    Das mit den Kästen Bier hab ich ernst gemein, wenn du mir irgendeine Möglichkeit gibst würde ich dir deine immense Hilfe gern etwas vergüten.
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    18.01.2019 14:30:08
    Markus
    Sorryich hab mich vertan bei der KomboBox. Solle es noch drin sein die zu machen, dann müsste sie dreispaltig sein: Name, Vorname, IDNr. aus Gruppe "1" das ist jetzt aber das letzte womit ich dich quälen. Danke für die Geduld.
    Ich hab grad das nachgelesen was du gemein hast als du sagtest "das der Threat schon etwas älter ist" er wird also automatisch geschlossen. Soll ich dann einen mit dem selben Namen wider aufmachen und auf diesen mit einem link verweisen?
    Grüße Markus
    AW: ListBox bedingt füllen , bedingt ausgeben
    18.01.2019 21:21:53
    Matthias
    Moin!
    Genau neuen Thread (evtl. auch mit dem selben Namen) und dann verlinken. Hier mal die Datei zurück:
    https://www.herber.de/bbs/user/126926.xls
    Das meiste ist gemacht. zum Eintragen aus LB2 sowie das mit dem Überschrieben bzw. Einfügen kam ich noch nicht. Kannst aber das bisherige mal testen, ob es so passt. Insb. mal bei den Filtern schauen (Gruppe1 macht dabei nichts) und beim Eintragen von mehr als 4 Adressen zum selben Namen (was soll noch gefüllt werden).
    Ansonsten habe ich noch einige Kommentare mehr eingetragen. Da wäre es aber am besten, wenn du beim Code (Abschnitt oder Zeilen) mal als Kommentar ein Fragezeichen einfügst. Damit bläht sich der Text nicht auf. Durch deinen Vornamenwunsch musste ich eh ab und an mal was einschieben.
    Die LB5 und 6 dienen als Speicher für die Listboxen. WEnn man in Lb2 was filtert und den einen anderen Filter setzt müsstet man sonst die Grunddaten erst wieder einlesen. Dazu könnte das zwar in eine Funktion packen aber bei kleinen Mengen kann man es auch gleich in der UF speichern. Alternativ könnte man auch eine modulweite Variable nehmen. Sollte der Datenbereich größer sein, würde ich das Einlesen bevorzugen.
    Den Fehler /typ unverträglich) bei Spalte Text konnte ich nicht nachvollziehen. Im Code werden jetzt bis zur vorletzten Spalte die Zellen als Uhrzeit formatiert.
    Kannst ja mal schauen, was noch nicht so passt. Den Rest wird es vermtl. erst zum SO oder MO Abend geben.
    VG
    AW: ListBox bedingt füllen , bedingt ausgeben
    19.01.2019 23:58:36
    Markus
    Hallo Matthias
    Schaut echt toll aus. Dank dir sind die wichtigsten Teile fast fertig, ich hab es schon Benutzt, so testweise und es ist eine unglaubliche Erleichterung vielen vielen Dank. Aus dem Code lerne ich zudem auch sehr viel ich bin da noch am verstehen aber die zusätzlichen Kommentare helfen da sehr.
    Bei den Filtern wäre es gut, wenn sie in einer Abhängigkeit stehen würden aber so sind sie auch schon sehr hilfreich. Könntest du mir den Namensfilter und einen zweiten Gruppenfilter zu laufen bringen? so dass ich mir zwei Gruppen einblenden kann (nur wenn es leicht geht).
    Also bis jetzt sind mir folgende dinge aufgefallen aber es sind nicht direkt Fehler, sondern ich hab es glaub ich schlecht erklärt.
    *Wählt man einen Gruppenfilter aus und schaltet dann auf eine andere Gruppe um. Dann ist die ListBox leer, man muss zuerst auf „alle“ gehen, um eine andere gruppe zu setzen. Kann man da noch was machen.
    *Bei Auswahl und Übertragung einer Person mit 4 Adressen wird eine Leerzeile eingefügt.
    *Bei Auswahl einer Person mehr als 4 Adressen fehl der Name und ID in der zweiten Zeile.
    *Mit dem eintragen aus LB2 meinte ich eigentlich das man nicht unbedingt nach Auswahl der Personen zuerst Page 2 aufmachen müssen will aber jetzt wo ich den Code schon etwas verstehe, würde es da nicht reichen beim Übertragen (von Page 1 aus) über den Code ganz kurz auf Page 2 zu schaltet und dann zurück auf Page 1 schaltet. Und Überträgt man von Page 2 aus dann bleibt alles wie gehabt.
    *Beim Füllen der Namen von Gruppe 1 müsst es mit Name Vorname Id gefüllt werden im Moment ist die ID zuerst.
    Also zu LB5 und LB6 Puuuh eine gute Frage, der Daten Bereich wird sich so auf die 1000 Zeilen im Tab daten belaufen. Die Mappe soll auf einem sehr sehr schwachen Rechner laufen. Tut sie bis jetzt auch. Ist es eigentlich sinnvoll Variablen = Nothing setzen, wenn man sie nicht mehr Brauch hab irgendwo mal gelesen das es Speicher frei macht, Stimmt das?
    Mappe mit angepasstem Userform und deinem letzten Code drin. https://www.herber.de/bbs/user/126939.xls Ich habe auch im Datenbereich ein paar spalten dazu gemacht um die Dimension des Daten Tabs besser zu verdeutlichen. Die Spaltenanzahl mal 1000 Zeilen. Aber durch das einlesen nach Überschriften sollte die Spaltenanzahl egal sein, oder?
    Grüße Markus
    ListBox bedingt füllen , bedingt ausgeben Teil 2
    20.01.2019 00:12:03
    Markus
    Ich glaub heute läuft der Thread aus. Ist echt blöd das die nur 5 Tage benutzbar sind. Die Userform ist fast perfekt und kurz vorher geht der Thread drauf. Sobald er sich schließt öffne ich einen mit der Bezeichnung „ListBox bedingt füllen,bedingt ausgeben Teil 2"
    Danke für alles
    Grüße Markus

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige