Office: (Office 2016) weitere Tabellendaten von Kunden in eine Userform mit Textboxen laden

Helfe beim Thema weitere Tabellendaten von Kunden in eine Userform mit Textboxen laden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Guten Morgen, zu so früher Stunde noch ein Anliegen, wo ich echt Hilfe brauche. Werde dann gleich auch meine Codes dazu mitsenden. Ich habe eine... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von cfs73, 15. April 2020.

  1. cfs73 Neuer User

    weitere Tabellendaten von Kunden in eine Userform mit Textboxen laden


    Guten Morgen,

    zu so früher Stunde noch ein Anliegen, wo ich echt Hilfe brauche. Werde dann gleich auch meine Codes dazu mitsenden.

    Ich habe eine Datenmaske, wo ich Teilnehmer*innen und dessen Daten sehen kann und bearbeiten, und gespeichert wird alles in einer Tabelle "Datenbank". Die Userform hat eine Multipage mit 3 Blättern und ist meine Datenmaske. Die Datentabelle "Datenbank" ist für 37 Teilnehmer*innen untereinander angelegt von "A2-A37" und die Daten werden bisher aus 50 Spalten zu den Teilnehmern in die Userform geladen. Jede Textboxbezeichnung ist von seiner Nummerierung 1-50 wie die Anzahl der Spalten.

    Durch eine weitere Userform, die meine Suchmaske ist, wo ich Vor- und Nachname eingebe und wenn der richtige Name gefunden wurde, dann öffnet sich die Datenmaske mit den Daten des Teilnehmers.

    Alles funktioniert super. Nun möchte ich eine 2 Tabelle auf einen anderen Tabellenblatt anlegen, in der ich zu jeden*r Teilnehmer*in noch 3 Spalten für Bemerkungen usw. haben möchte und vielleicht auch noch Fotos ablegen kann (Fotos nicht unbedingt nötig, wenn es nicht klappt). Die 3 Spalten sind für meine Datenmaske als Erweiterung und es befindet sich in meiner Multipage auf jeder Seite eine Textbox dafür. Die 3 Textboxen haben andere Namen als Bezeichnung, als die ersten Textboxen von 1 bis 50.
    Nun komme ich hier nicht weiter, diese Daten beim öffnen der Datenmaske für einen Teilnehmer*in mit hochzuladen und auch wieder zu speichern.

    Hier meine Codes. Der erste Code öffnet durch suchen meine Datenmaske:

    'Schalter suchen in Datenbank
    Private Sub CommandButton1_Click()
    Dim x As String ' hier muss string stehen, wenn auch Texte als Suchkriterium zulässig sein sollen
    Z = Worksheets("Datenbank").UsedRange.Rows.Count
    x = TextBox1
    temp = 0
    For i = 2 To 37
    If Worksheets("Datenbank").Cells(i, 1) = x Then
    temp = 1
    Exit For
    End If
    Next
    If temp = 1 Then
    Unload Me
    zeile = i
    UserForm2.Show
    Else
    MsgBox "Teilnehmer*in nicht vorhanden!", vbExclamation
    TextBox1 = ""
    End If
    'Zur Seite 1 des Registers springen
    UserForm2.MultiPage1.Value = 0 'Seite 1
    End Sub

    Der 2. Code:
    'Damit klappt es auch gut, die Daten aus der Tabelle zu laden
    Private Sub UserForm_Initialize()
    Dim lng_spalte As Long
    Dim obj_wks As Worksheet

    Set obj_wks = Worksheets("Datenbank")
    If zeile <> 0 Then
    For lng_spalte = 1 To 50
    Me.Controls("TextBox" & lng_spalte) = obj_wks.Cells(zeile, lng_spalte)
    Next
    End If

    End Sub

    3.Code zum speichern der Daten bei Veränderung:

    'speichern daten
    Private Sub cmdSpeichern1_Click()
    Dim lng_spalte As Long
    Dim obj_wks As Worksheet

    Set obj_wks = Worksheets("Datenbank")
    If TextBox1 = "" And TextBox2 = "" And TextBox3 = "" And TextBox4 = "" And TextBox5 = "" ..... And TextBox50 ="" then
    obj_wks.Rows(zeile).Delete
    End If
    If zeile = 0 Then
    ' wenn ein neuer Datensatz erfasst wurde, erste leere zeile in Datenbank ermitteln
    zeile = Worksheets("Datenbank").Cells(Rows.Count, 1).End(xlUp).Row + 1
    End If
    For lng_spalte = 1 To 50
    obj_wks.Cells(zeile, lng_spalte) = Me.Controls("TextBox" & lng_spalte)
    Next
    Unload Me

    End Sub

    Hier weiß ich nicht mehr weiter, denn ich bin noch Anfänger, was VBA angeht. Wie muss ich die 3 Codes erweitern, um die Daten der Spalten für Bemerkungen der Teilnehmer*innen aus den anderen Tabellenblatt mit in meine Maske hochzuladen und auch wieder zu speichern?

    Ich weiß es viel , aber ich hänge fest und hoffe ihr habt eine Idee für mich.

    Vielen Dank schon mal
     
    Zuletzt von einem Moderator bearbeitet: 30. November 2020
  2. Exl121150 Erfahrener User
    Hallo,

    den VBA-Code von "UserForm1" habe ich unverändert belassen.
    Der VBA-Code von "UserForm2" könnte zB. wie folgt aussehen:
    Code:
    Option Explicit
    
    'Der 2. Code:
    'Damit klappt es auch gut, die Daten aus der Tabelle zu laden
    Private Sub UserForm_Initialize()
       Dim lng_Spalte As Long
       Dim str_PfadDatei As String
       
       If Zeile <> 0 Then
          With Worksheets("Datenbank")
             For lng_Spalte = 1 To 50
                Me.Controls("TextBox" & lng_Spalte) = .Cells(Zeile, lng_Spalte)
             Next
          End With
          'Die ersten 3 Spalten von Arbeitsblatt 'Bemerkungen' werden verwendet,
          '  um die 3 Textboxen namens 'TextBemerkung1', 'TextBemerkung2' und 'TextBemerkung3' zu befüllen:
          With Worksheets("Bemerkungen")
             Me.TextBemerkung1.Value = .Cells(Zeile, 1)
             Me.TextBemerkung2.Value = .Cells(Zeile, 2)
             Me.TextBemerkung3.Value = .Cells(Zeile, 3)
          End With
          'Laden von Bilddaten in ein Image-Objekt namens 'Image1'
          '  aus einer *.jpg-Datei im selben Verzeichnis wie diese Excel-Datei
          '  und deren Name sich zusammensetzt aus dem Inhalt von "TextBox1" und ".jpg":
          str_PfadDatei = ActiveWorkbook.Path & "\" & Trim$(Me.Controls("TextBox1")) & ".jpg"
          On Error Resume Next
          With Me.Image1
            .PictureSizeMode = fmPictureSizeModeZoom
            .Picture = LoadPicture(Filename:=str_PfadDatei)
          End With
       End If
       
    End Sub
    
    '3.Code zum speichern der Daten bei Veränderung:
    'speichern daten
    Private Sub cmdSpeichern1_Click()
       Dim lng_Spalte As Long
       Dim bol_AlleLeer As Boolean
       
       'Testen, ob alle Textbox1..Textbox50 leer sind:
       bol_AlleLeer = True
       For lng_Spalte = 1 To 50
          If Trim$(Me.Controls("TextBox" & lng_Spalte).Value) <> "" Then bol_AlleLeer = False: Exit For
       Next lng_Spalte
       
       With Worksheets("Datenbank")
          If Zeile = 0 Then
             ' wenn ein neuer Datensatz erfasst wurde, erste leere zeile in Datenbank ermitteln
             Zeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
          End If
          
          If bol_AlleLeer Then
             .Rows(Zeile).Delete
          Else
             For lng_Spalte = 1 To 50
                .Cells(Zeile, lng_Spalte) = Me.Controls("TextBox" & lng_Spalte)
             Next
          End If
       End With
       
       With Worksheets("Bemerkungen")
          If bol_AlleLeer Then
             .Rows(Zeile).Delete
          Else
             .Cells(Zeile, 1).Value = Me.TextBemerkung1.Value
             .Cells(Zeile, 2).Value = Me.TextBemerkung2.Value
             .Cells(Zeile, 3).Value = Me.TextBemerkung3.Value
          End If
       End With
       
       Unload Me
       
    End Sub
    
    Mein Code setzt folgende Änderungen voraus:
    1. Zum bereits existierenden Arbeitsblatt "Datenbank" habe ich das Arbeitsblatt "Bemerkungen" eingefügt, das in den ersten 3 Spalten die zusätzlichen Inhalte der 3 TextBoxen für Bemerkungen aufnimmt.
    2. Die 3 neuen TextBoxen aus Punkt 1) habe ich "TextBemerkung1", "TextBemerkung2" und "TextBemerkung3" genannt.
    3. Den Wunsch, auch ein Foto im Formular "UserForm2" anzuzeigen, habe ich so realisiert,
      • dass du irgendwo in der UserForm2 ein Image-Objekt namens "Image1" einfügen musst.
      • Ferner musst du im demselben Verzeichnis, in dem sich auch diese Excel-Datei befindet, "*.JPG"-Dateien speichern, die den gleichen Dateinamen haben müssen wie er jeweils in der 1.Spalte (Spalte A) von Arbeitsblatt "Datenbank" enthalten ist. Ich nehme an, diese Namen aus Spalte A sind alle eindeutig.
        Wenn also dort zB. der Name "Neumayer" enthalten ist, muss es im Verzeichnis dieser Excel-Datei auch eine Datei namens "Neumayer.jpg" geben.
    4. Du kannst natürlich alle diese Namensvorgaben von mir auch ändern - nur musst du dann natürlich auch den VBA-Code an den entsprechenden Stellen anpassen.
     
    Exl121150, 16. April 2020
    #2
  3. cfs73 Neuer User
    Vielen Dank für Deine Hilfe,

    das klappt alles soweit gut mit den Bemerkungen, nur nicht was das laden von Bildern angeht. Das habe ich noch nicht so ganz begriffen. Vielleicht gebe ich auch den Pfad nicht richtig ein. Kann ich denn dann Bilder vom Teilnehmer auch nue laden und speichern oder muss ich das Bild jedes Mail im den Ordner wechseln und den Namen so wieder vergeben? Die Spalte "A"habe ich gewählt, weil dort eine Verkettung aus Nachname, Vorname ist. Die habe ich so gewählt weil, bevor sich die Datenmaske öffnet, öffnet sich eine TN Suchmaske und der sucht nach "Nachname, Vorname", damit es nicht zur Verwechslung kommt bei gleichen Nachnamen. Zu der Suchmaske "UserForm1" kommt man über die Startseite "Prüfungsübersicht" und da gibt es einen Button "TN verwalten"
    Außerdem gibt es dort auch einen Button "neu", der öffnet eine "Listbox", wo ich die Teilnehmer mit Anrede, Nachname und Vorname anlegen, z.B. am Anfang zum Kursstart kann ich soll alle Namen anlegen. Doppelklick in die Listbox und dann kann ich die Daten eintragen
    Ich habe meine Datei mal im Anhang zur besseren Verständnis mal mit geschickt.


    Vielen Dank für Deine Bemühung, denn ich bin echt begeistert und lerne noch echt viel dazu.

    Bis bald
     
  4. cfs73 Neuer User

    weitere Tabellendaten von Kunden in eine Userform mit Textboxen laden

    Hallo Anton,

    entschuldige meine späte Antwort. Vielen Dank für Deine Hilfe und für den tollen Code. Ich wäre da nicht so schnell drauf gekommen.

    Ich habe nur dadurch ein kleines neues Problem. Ich würde ja die Datei senden, aber die ist viel zu groß.

    Es funktioniert soweit auch alles, aber etwas läuft jetzt nicht mehr rund.

    Ich erkläre kurz:

    Bevor ich die Teilnehmer*innen in meine Userform2 mit den Daten laden kann, habe ich vorab eine Userform1 als Suchmaske, d. h. ich gebe den Nachnamen mit Komma und dann den Vornamen ein und wenn ich auf Ok gehe, sucht er vorab nach den*r Teilnehmer*in, ob ich der Person in meiner Datenbank habe. Wenn die Person vorhanden ist, öffnet sich die Datenmaske mit allen wichtigen Daten zur Teilnehmer*in. Das klappte bisher alles super. Nun ist aber folgendes, was vorher nicht war. Wenn ich die Datenmaske schließe und nun mir die Daten einer anderen Person ansehen möchte und ich suche die andere Person über die Suchmaske und gehe auf Ok, dann werden nicht mehr die Daten zu der Person angezeigt, sondern die Daten der Person zuvor. Erst wenn ich jetzt die Datenmaske schließe und probiere es dann erneut, dann klappt es komischerweise.

    Irgendwo ist jetzt ein Fehler drin, denn ich nicht finde und ich habe es mir auch angesehen. Es ist wahrscheinlich nur eine Kleinigkeit,aber vielleicht sind meine Kenntnisse auch zu gering.

    Ansonsten läuft alles.

    Vielen Dank
     
  5. Exl121150 Erfahrener User
    Hallo,

    wenn die UserForm1 (=Suchformular) eine Person aus Spalte A des Arbeitsblattes "Datenbank" findet, so wird die Zeilennummer, in der die Person steht, in der Variablen "Zeile" gespeichert.
    Diese Variable muss natürlich auch erhalten bleiben, wenn das Suchformular geschlossen wird, denn diese Zeilennummer wird auch im UserForm2 (=Bearbeitungsformular) benötigt.
    Wird diese Zeilennummer nicht aktualisiert (durch einen Suchlauf), so wird im Bearbeitungsformular immer wieder die Zeile mit der letzten erfolgten Suche angezeigt.
    Aus diesem Grund muss die Variable "Zeile" als PUBLIC in einem allgemeinen Codemodul (zB. "Modul1") deklariert sein.

    Außerdem ist es dringend empfehlenswert, in jedem Codemodul als erste Zeile "Option Explicit" einzugeben. Dadurch wird es dem Compiler ermöglicht, nicht deklarierte Variablen unbarmherzig anzumahnen und die Kompilierung abzubrechen. Der Compiler zeigt daraufhin die 1. gefundene Stelle mit einer nicht deklarierten Variablen an.
    Das mag fürs Erste ärgerlich erscheinen, ist aber in dem Fall, dass man nur irgendwo einen Tippfehler bei einem Variablenbezeichner gemacht hat, ungemein zeitsparend. Denn erfahrungsgemäß überliest man gemachte Flüchtigkeitsfehler (fast) immer. Es gibt dafür auch eine vorgebbare Editor-Option ("Variablendeklaration erforderlich")

    Ich habe dir unten eine Excel-Datei mit einem simplifizierten Datenbestand, aber mit vollständigen Makros in den Formularen 'UserForm1' und 'UserForm2', angefügt - soweit ich dies deinen Postings entnehmen konnte.
    In der 'UserForm2' (Bearbeitungsformular) habe ich (außer den Zusatzfeldern für Bemerkungen bzw. Foto) nur 2 Felder für 'TextBox1' und 'TextBox2' eingefügt. Die restlichen 48 TextBoxen und ihre Verteilung auf die "Pages" habe ich mir erspart. Aus diesem Grund habe ich in der 'UserForm2' folgende Zeile aufgenommen:
    Const AnzahlTextboxen As Long = 2 '<-- ändern auf: 50
    Diese Zeile musst du wahrscheinlich ändern auf:
    Const AnzahlTextboxen As Long = 50 '<-- ändern auf: 50
     
    Exl121150, 18. April 2020
    #5
  6. cfs73 Neuer User
    Hallo,

    ich danke dir echt für die Mühe. Mit einen Kenntnissen hätte ich das nicht so hinbekommen. Aber ich habe jetzt ein Problem noch mehr als vorher oder ich verstehe es vielleicht alles jetzt nicht mehr. Hab,e denke ich alles so gemacht, wie Du gesagt hast. Aber jetzt klappt es gar nichts mehr bei mir. Nach dem ich Code 2 und Code 3 eingebaut habe, zeigt er mir die Daten der Teilnehmer überhaupt nicht mehr an. Weiß jetzt echt nicht mehr weiter, woran es jetzt noch liegt. Bin jetzt gerade verzweifelt.
    Mein Hintergedanke mit der Suche nach dem Nachnamen und Vornamen war, was mache ich, wenn es jetzt 2 Teilnehmer mit gleichen Namen gibt?

    Ich Danke Dir ganz doll für die Hilfe und für Deine Bemühungen
     
  7. cfs73 Neuer User
    Jetzt klappt es. Also ich den Befehl "Const AnzahlTextboxen As Long = 50 '<-- ändern auf: 50" weggelassen habe ging es. Wer weiß was ich vielleicht angestellt habe.

    Vielen Dank noch mal für alles
     
  8. cfs73 Neuer User

    weitere Tabellendaten von Kunden in eine Userform mit Textboxen laden

    Eine Frage habe ich nur zu den Bildern. Mit den Code, kann ich nur ein Foto einbauen oder? Ursprünglich wollte ich es mit den Bildern so, wenn ich die Daten eines anderen Teilnehmers aufrufe, dann soll auch dessen Foto zu sehen sein. Daher hatte ich an die Button gedacht zum Bilder suchen, dann speichern und wenn ich will auch wieder aus der Maske löschen können.

    Schönen Sonntag
     
Thema:

weitere Tabellendaten von Kunden in eine Userform mit Textboxen laden

Die Seite wird geladen...
  1. weitere Tabellendaten von Kunden in eine Userform mit Textboxen laden - Similar Threads - Tabellendaten Kunden Userform

  2. Tabellendaten

    in Microsoft Excel Hilfe
    Tabellendaten: Hallo Experten ich habe eine Tabelle erstellt in der alle Kollegen gelistet sind mit allen Schulungen die sie gemacht haben bzw. zu denen sie angemeldet sind. Nun würde ich gerne für jeden...
  3. Filtern von Kunden und Berechnung von Umsatz mit Pivottabelle

    in Microsoft Excel Hilfe
    Filtern von Kunden und Berechnung von Umsatz mit Pivottabelle: Hallo und guten Abend, hier mal eine Problemstellung aus den Qualitätsmanagementsystem. Zur Risikobewertung möchten wir den Umsatz und die Liefermenge der Artikel für bestimmte Kunden ermitteln....
  4. Kunden Bestell-Intervall

    in Microsoft Access Hilfe
    Kunden Bestell-Intervall: Hallo zusammen, Ich hoffe weiterhelfen kann denn ich verzweifele gerade. Vor ab sei einmal gesagt, dass ich SQL nicht beherrsche. Ich kann zwar Code eingeben, verstehe aber leider nicht was ich da...
  5. Verwenden der Kartenansicht zum Arbeiten mit Tabellendaten auf Ihrem Telefon

    in Microsoft Excel Tutorials
    Verwenden der Kartenansicht zum Arbeiten mit Tabellendaten auf Ihrem Telefon: Verwenden der Kartenansicht zum Arbeiten mit Tabellendaten auf Ihrem Telefon Excel für iPhone Excel für Android-Smartphones Mehr... Weniger...
  6. Webinar-Termin an viele Kunden verschicken

    in Microsoft Outlook Hilfe
    Webinar-Termin an viele Kunden verschicken: Hallo, das Ziel mehrere Hundert externe eMails zu einem Webinar einzuladen und dabei die Nachverfolgung im Kalender von Outlook zu benutzen. Variante 1: Serien- eMail mit Word personalisiert...
  7. Tabellendaten auslesen (erstellt am) ?

    in Microsoft Access Hilfe
    Tabellendaten auslesen (erstellt am) ?: Hallo, gibt es eine Möglichkeit die Daten einer Tabelle auszulesen, welche angibt wann sie erstellt wurde uns zuletzt geändert ? Wenn ja welche ? Vielen Dank im vorraus.
  8. Tabellendaten ändern mit Dropdown

    in Microsoft Excel Hilfe
    Tabellendaten ändern mit Dropdown: Hallo habe folgendes problem und hoffe ihr könnt mir helfen? Also möchte eine Tabelle und dadurch ein Statistik erstellen, in der ich meine Kunden in einer Dropdownzeile anklicke und er mir...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden