Office: (Office 365) Kombinationsfeld in VBA auswerten

Helfe beim Thema Kombinationsfeld in VBA auswerten in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Guten Tag, ich habe ein VBA-Problem mit Kombinationsfeldern. Umfeld: Eine Tabelle A mit Namen incl. Adressen, indiziert (NamenID), keine doppelten... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Ulli P, 12. August 2025 um 10:32 Uhr.

  1. Ulli P User

    Kombinationsfeld in VBA auswerten


    Guten Tag, ich habe ein VBA-Problem mit Kombinationsfeldern.
    Umfeld:
    Eine Tabelle A mit Namen incl. Adressen, indiziert (NamenID), keine doppelten Einträge möglich.
    Eine Tabelle B mit Rechnungen, indiziert. Ein Feld darin enthält die NamenID aus Tabelle A.
    Ein Formular zur Eingabe/Bearbeitung der Datensätze in Tabelle B. Darin ein Kombinationsfeld zur Auswahl des Namens des Rechnungserstellers. Darin wird der Nachname angezeigt. Klickt man auf den Pfeil nach, unten werden Nachname und Vorname angezeigt. Die Rechnung selber wird im Dateisystem gespeichert und über einen Link in einem Datenfeld der Tabelle B angesprochen. Diesen Link will ich automaisch erzeugen, damit alle Rechnungen in gleicher Form gespeichert werden. Das Link-Erstellen funktioniert mit einem Problem:
    Der VBA-Befehl me.Name.value erzeugt die NamenID, aber nicht - wie gewünscht - den Namen, der im Kombinationsfeld angezeigt wird. Im Link steht dann "2025-08-11_19..." statt "2025-08-11_Mustermann..." Daher meine Frage: Wie kann ich mit die 19 zu Mustermann auflösen, am besten die direkte Nutzung des angezeigten Namens im Kombinationsfeld?
     
  2. Moin,

    eine Beziehung speichert den Verweis auf eine Tabelle, genauer: auf deren Id. Wenn nach dem Anlegen in Rechnung der Id des Kundens steht, dann ist das völlig korrekt.

    In Access kann man auch murksen, indem man die Beziehung nicht auf den Id legt, sondern auf ein beliebiges Feld der referierten Tabelle. Spätestens dann, wenn sich der Name des Kunden - zB wg. Heirat - ändert, fällt dieser Mechanismus auf die Nase.

    Ganz nebenbei: A und B anstatt der Tabellennamen einzuführen zieht eine unnötige Abstraktionsebene ein. Bei zwei Tabellen mag das noch angehen, aber nimm mal ein komplexes Modell mit mehr als 7 Tabellen, da kann der Helfer gleich einen Zettel malen und danebenlegen.
     
  3. Doming
    Doming Erfahrener User
    Moin Ulli,
    niiemals, never ever und gar nicht in Access den Begriff „Name” für irgendwas eigenerstelltes verwenden, auch nicht als Bezeichnung für ein Control.
    „Name” ist ein reserviertes Wort und wenn es nicht bestimmungsgemäß verwendet wird, kann es im Code zu Verwechselungen führen.
    Nimm stattdessen EName, Vorname, Nachname, Vollname, Name_ oder Name1, das ist alles okay.

    So, nun zu Deiner Frage:
    Ein Kombinationsfeld (ComboBox) muss nicht, hat aber meistens eine gebundene, unsichtbare Spalte mit der ID des zugrundeliegenden Primärschlüssels (in Deinem Fall NamenID) und weitere ein oder mehrere Spalten mit den angezeigten Namen des Rechnungserstellers.

    Der „VBA-Befehl” wie Du ihn nennst ist kein Befehl, sondern eine Eigenschaft des ComboBox-Steuerelements, nämlich der gebundene Wert.
    Wenn Du den Namen aus dem Kombinationsfeld extrahieren willst, hast Du mehrere Möglichkeiten:
    zum Beispiel den Wert aus der ungebundenen Spalte des Kombinationsfeld auslesen
    Code:
    Compare Database
    Option Explicit
    
    Private Sub ComboBox1_AfterUpdate()
     Dim strName as string
        strName = Me.Combobox1.Column(1)
    End Sub
    (in der Annahme, dass Spalte 1 die gebundene ist und Spalte2 die mit den Namen (das kann man in den Eigenschaften des Kombifeldes einstellen/ablesen))

    Oder Du liest den gebundenen Wert aus und ermittelst damit den Namenswert aus der Tabelle.
    Code:
    Option Compare Database
    Option Explicit
    
    Private Sub ComboBox1_AfterUpdate()
     Dim strName as string
        strName = Nz(DLookup("EName", "tbl_A", "NameID = " & Me.Combobox1),"")
    End Sub
    Gruß
    Doming
     
  4. andyfau
    andyfau Erfahrener User

    Kombinationsfeld in VBA auswerten

    Das ist faktisch falsch. Denn wenn die Beziehung mit Aktualisierungsweitergabe erstellt ist, darf sich ein Indexfeld ruhig ändern. Die nachgeodneten, verknüpften Datensätze werden von der DB-Engine automatisch nachgepflegt. Aber vorsicht, bei Kundenstämmen mit Rechnungsverknüpfung nicht den Kundennamen im Stamm ändern. Dann ändern sich alle Rechnungen auch, was sie wegen der Historie nicht dürfen.
     
  5. andyfau
    andyfau Erfahrener User
    Zum Thema Kombifeld: Das ,was Doming schreibt ist eine, wenn auch etwas umständliche Möglichkeit, die ID als gebundenes Feld zu nutzen und im Kombinationfeld den zugeordneten Wert anzuzeigen.
    Einfacher ist es, wenn z.B. Spalte eins die gebundene Spalte ist und Spalte zwei den Wert beinhaltet, der im Kombifeld angezeigt wird/werden soll, in der Eigenschaft "Spaltenbreiten" 0 cm; 5cm einzutragen. So wird die ID für die Tabellen verarbeitet, das Kombifeld zeigt aber benutzerfreundlich den Auswahlwert der Spalte 2.
     
  6. Doming
    Doming Erfahrener User
    Moin Andy,
    Du meinst, so wie ich es in meinem ersten Beispiel geschrieben habe, ist es besser? ;)
     
  7. andyfau
    andyfau Erfahrener User
    Ja klar, sorry, ich hatte es zu schnell gelesen.
     
  8. Ulli P User

    Kombinationsfeld in VBA auswerten

    Moin,
    vielen Dank für die vielen Antworten und Ratschläge!
    Ich habe die Frage allgemeiner halten wollen, dadurch sind ein paar Vereinfachungen passiert. Natürlich verwende ich Nachname und die Tabellen heißen auch nicht "A" und "B" sondern tblLieferanten und tblRechnungen.

    Ich habe mich für die Lösung von Doming entschieden und sie funktioniert einwandfrei!
     
    1 Person gefällt das.
Thema:

Kombinationsfeld in VBA auswerten

Die Seite wird geladen...
  1. Kombinationsfeld in VBA auswerten - Similar Threads - Kombinationsfeld VBA auswerten

  2. Combobox (Kombinationsfeld) im Tabellenblatt mit VBA

    in Microsoft Excel Hilfe
    Combobox (Kombinationsfeld) im Tabellenblatt mit VBA: Hallo, es wäre super, wenn mir jemand bei diesem (vielleicht nicht ganz trivialen Problem) behilflich sein könnte: Excel 2016, Win 7: Ich möchte eine Combobox in einem Tabellenblatt mittels VBA...
  3. Kombinationsfeld/Datensatz auswählen/VBA

    in Microsoft Access Hilfe
    Kombinationsfeld/Datensatz auswählen/VBA: Hallo, leider konnte ich bislang zu meinem Problem noch keine Lösung finden. Folgende Situation: Ich habe ein Formular, in dem ich per Kombinationsfeld verschiedene Datensätze auswählen kann....
  4. per VBA Werte aus Textfeld an Kombinationsfeld übergeben

    in Microsoft Access Hilfe
    per VBA Werte aus Textfeld an Kombinationsfeld übergeben: Hallo! Mit welchen VBA-Befehl kann man Werte (Zahl) aus einem Textfeld an ein Kombinationsfeld übergeben? Im Kombinationsfeld sollte anschließend der entsprechende Datensatz gesucht werden....
  5. Kombinationsfeld per VBA füllen

    in Microsoft Access Hilfe
    Kombinationsfeld per VBA füllen: Hallo zusammen Mit folgendem Code möchte ich ein Kombinationsfeld per VBA füllen, aber leider wird mir nichts angezeigt. Code: Dim cbo As ComboBox Dim str As String str = "SELECT...
  6. Kombinationsfeld per VBA aufklappen

    in Microsoft Access Hilfe
    Kombinationsfeld per VBA aufklappen: Hallo, ich habe ein Kombinationsfeld welches mittels RowSource gefüllt wird. Die Füllung ist abhängig von einem Suchterm der vom User in ein ungebundenes Steuerelement eingegeben wird. Nach dem...
  7. Wert in per VBA Kombinationsfeld löschen

    in Microsoft Access Hilfe
    Wert in per VBA Kombinationsfeld löschen: In einem Frm befinden sich zwei Kombi-Felder. Je nachdem, in welchem Kombi-Feld man einen Datensatz auswählt, werden in dem Frm die zugehörigen Daten angezeigt. Nun kann es aber passieren, dass...
  8. Code funktioniert nicht in erster Zeile eines Kombinationsfeldes

    in Microsoft Access Hilfe
    Code funktioniert nicht in erster Zeile eines Kombinationsfeldes: Hallo Community, ich habe ein vermutlich nur ganz kleines Problem: Folgender Code bezieht sich auf ein Kombinationsfeld mit dem Namen "Art". Er führt dazu, dass je nach Auswahl, die über das...
Schlagworte:
  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