Excel 1x Userform 2xTabellen verbinden

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von MacLeod.

    Excel 1x Userform 2xTabellen verbinden

    Guten Tag,

    bin neu hier... Hoffe ich bin hier auch richtig...:-)

    Ich suche eine Möglichkeit in einer Userform besteht aus TextBox und ComboBox 2 Tabellen zu kombinieren..
    Hintergrund.
    1. ComboBox203 holt sich seine Daten aus Tabelle1.
    2. TextBox202 bekommt seine ID von ComboBox203 Auswahl.(ComboBox203 soll nach Übergabe daten bestehen bleiben) für weitere Veränderung.

    3. ComboBox203 und TextBox202 Speichert per Change in Tabelle2 ab.
    4. in Tabelle2 kommen Zusatz Informationen zusammen. Aufgebaut per ID.

    Problem besteht darin, wenn ich
    Private Sub ComboBox203_Change() mit 2 Code ansprechen wird, trennt er sie nicht komplett.
    Hintergrund: möchte nur eine Ausgabe bzw. eine Anzeige, ohne Eingabe Möglichkeit, wie z.B. ein Label.

    Ergebnis:
    in der TextBox204(Tabelle2) kommt immer was anderes raus, als das was abgespeichert ist.

    Visual Basic-Quellcode

    1. 'Change
    2. Private Sub ComboBox203_change()
    3. With Tabelle1
    4. TextBox202.Text = .Cells(ComboBox203.ListIndex + 2, 2).Value
    5. End With
    6. TextBox214.Text = TextBox204 & ComboBox203
    7. End Sub


    TextBox214 ist nur eine Anzeige...wo TextBox202 & ComboBox203 zusammen geführt wird.

    Habe es per Label versucht die Anzeige in Echtzeit umzusetzen, Label205 geht in Echtzeit, aber ComboBox203 nicht.

    Visual Basic-Quellcode

    1. Private Sub TextBox204_Change()
    2. Label205 = TextBox204 & "@" & ComboBox203
    3. End Sub


    Kann mir einer weiter helfen?
    Gruß
    PS: kann meine Datei nicht hochladen, sie hat eine andere Änderung, als das was hier im Forum erlaubt ist, sorry...(xlsm)

    Topic verschoben und CodeTags gesetzt ~VaporiZed

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

    MacLeod schrieb:

    kann meine Datei nicht hochladen
    Zippen!

    Tipp: Benenne die Controls vernünftig und nummeriere sie nicht einfach durch.
    Ich hoffe, du hast nicht wirklich mehr als 200 Controls.

    Die Verwendung von With macht ein Programm unübersichtlich und schwerer zu debuggen.
    Adressiere besser direkt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Guten Morgen,

    danke für die Antwort.
    zu tipp 1.
    die Benennung der TextBox und sind nicht durch einander.
    Ich habe sie so gegliedert dass Tabelle 1 ab 100 und Tabelle 2 ab 200 beginnt. damit ich nicht durch einander komme.

    ​Die Verwendung von With macht ein Programm unübersichtlich und schwerer zu debuggen.Adressiere besser direkt.

    Was meinst du damit direkt?
    Ich kenne mich noch nicht so gut aus, mit VBA, bin noch am lernen...:-(

    Gruß
    Dateien
    • Forum_Datei.rar

      (43,57 kB, 159 mal heruntergeladen, zuletzt: )

    MacLeod schrieb:

    Was meinst du damit direkt?
    Anstatt

    Visual Basic-Quellcode

    1. With Tabelle1
    2. TextBox202.Text = .Cells(ComboBox203.ListIndex + 2, 2).Value
    3. End With

    Visual Basic-Quellcode

    1. TextBox202.Text = Tabelle1.Cells(ComboBox203.ListIndex + 2, 2).Value

    MacLeod schrieb:

    die Benennung der TextBox und sind nicht durch einander.
    Ich habe sie so gegliedert dass Tabelle 1 ab 100 und Tabelle 2 ab 200 beginnt. damit ich nicht durch einander komme.
    Eine Benennung wie Textbox_Vorname wäre da hilfreicher.
    So musst du abzählen, an welcher Position die Textbox sich befindet.
    Und wenn du die Textbox verschiebst oder eine andere dazwischen schiebst, stimmt nichts mehr.


    Kannst du jetzt nochmals mit einfachen Worten erklären, was passiert und was anders reagiert als du erwartest.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Guten Morgen,

    danke für die Antwort.
    Danke für den Anstoss, mit den Code

    Quellcode

    1. TextBox202.Text = Tabelle1.Cells(ComboBox203.ListIndex + 2, 2).Value

    Hat ohne problme geklappt.

    Also der Hintergrund ist.
    Wenn ich ComboBox203 auswähle, dann soll er im TextBox214 (ober links) den Wert in Echtzeit übergeben. Das tut er.
    Wenn ich anschließend TextBox204 (vornamen) eintippe, soll er auch in Echtzeit in der TextBox214(ober Links) sofort anzeigen, was er nicht macht.

    Zurzeit verhält er sich so:
    Wenn ich in TextBox204 was reinschreibe macht er es nicht in Echtzeit.
    in der ComboBox203 schon.

    Wenn ich mit Label arbeite, dann macht er es da genau anderes rum:
    TextBox204 in Anzeige in Label205 in Echtzeit.
    ComboBox203 in Anzeige in Label205 in Echtzeit, macht er nicht. Aber besser als in der TextBox Variante.

    Gruß
    Bilder
    • echtzeit_vorname.jpg

      55,63 kB, 641×369, 135 mal angesehen
    Mein Vorschlag:

    Visual Basic-Quellcode

    1. Private Sub ComboBox203_Change()
    2. TextBox204.Text = ""
    3. TextBox202.Text = Tabelle1.Cells(ComboBox203.ListIndex + 2, 2).Value
    4. Update214
    5. End Sub
    6. Private Sub TextBox204_Change()
    7. Update214
    8. End Sub
    9. Private Sub Update214()
    10. TextBox214.Text = TextBox204.Text & " " & ComboBox203.Text
    11. End Sub

    Wobei ich würde vermutlich den Vornamen auch aus einer ComboBox auswählen lassen, deren Auswahl reduziert ist auf die Möglichkeiten, die der Nachname noch übrig lässt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --