1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Ermittelter Wert aus Excel-Dialog in Feld schreiben

Discussion in 'Office-Programme' started by thschmalz, Oct 16, 2006.

Thread Status:
Not open for further replies.
  1. thschmalz

    thschmalz Kbyte

    Hallo,

    habe mal wieder ein Problem, für das ich Eure Hilfe brauche. Habe in einer Excel Datei (Excel 2003) ein Tabellenblatt Rechnung und ein Tabellenblatt Kunden. In der Tabelle Kunden sind die Kundennummer, Name und Vorname getrennt, also jeweils in einem Feld eingegeben. Als letzte Spalte wurde eine Formel eingegeben, die den Nachnamen, den Vornamen und die Kundennummer enthält (Mustermann Michael 117).
    In einem Dialog habe ich ein Listenfeld angelegt, das diese Spalte aus der Kundentabelle darstellt und sämtliche Kunden mit Kundennummer anzeigt. Nach Klick auf einen dieser Kunden in der Liste soll die Kundennummer in ein Feld der Rechnung eingefügt werden. Das Dialogfenster wird aus der Tabelle Rechnung heraus aufgerufen. Wie kann ich das realisieren?

    Ciao Tom
     
  2. Hascheff

    Hascheff Moderator

    Hi Tom,
    wenn du das Dialogfeld schon hast, sehe es eigentlich nur noch zwei kleinere Probleme:

    Aus dem zusammengesetzten Datensatz muss die Kundennummer extrahiert werden.
    Hier könnte dir ein Script helfen, welches vor Kurzem in der PC-Welt war: PCWFindenInv
    Damit kannst du den String von rechts auswerten.

    Dann muss der gefundene Wert in die aktive? Zelle eingetragen werden. Dazu nutzt man ActiveCell.Value.

    Aber warum führst du eine Kundendatenbank in Excel, wenn du auch in Access arbeitest? Dort könnte ich dir das besser erklären.
    Access bietet da bequemeres Arbeiten und bessere Darstellungs- und Analysemöglichkeiten.

    mfg
    Hartmut
     
  3. thschmalz

    thschmalz Kbyte

    Hi Hartmut,

    ganz einfach, diese Datei ist nicht für mich sondern für meine Schwester und es wird von ihr nur mit Excel gearbeitet.

    Statt eines Dialogs wäre auch eine Userform denkbar. Hier sollten zwei Felder vorhanden sein. In einem wähle ich den Nachnamen aus der Tabelle Kunden aus und im zweiten soll dann die Kundennummer erscheinen, die nach betätigen eines Buttons ÜBERNAHME in ein vorgesehenes Feld der Tabelle RECHNUNG eingetragen werden soll. Diese Möglichkeit wäre noch besser als mit einem Dialog. Leider habe ich noch nie eine Userform erstellt und bin deshalb ganz auf Deine Hilfe angewiesen. Ach ja, und danke für die schnelle Antwort.

    Ciao Tom
     
  4. thschmalz

    thschmalz Kbyte

    Hi Hartmut,

    habe jetzt eine Userform angelegt, die mit zwei Feldern, eine Listenfeld und ein Textfeld, sowie zwei Buttons KUNDENNUMMER ÜBERNEHMEN und ABBRUCH ausgestattet ist. Im Listenfeld bekomme ich die Liste der Nachnamen aus der Tabelle KUNDEN angezeigt. Auch die Datenübergabe beim Betätigen des ersten Buttons, wenn ich eine Zahl in das Textfeld manuell eingebe, in meine Tabelle RECHNUNG klappt einwandfrei und das Userform schliesst sich danach auch wieder. Auch der ABBRUCH-Button funktioniert ohne weiteres. Tja, jetzt fehlt nur noch das automatische Ausfüllen des Textfeldes mit der korrekten Kundennummer, wenn ich einen Nachnamen aus der Listbox ausgewählt habe.

    Ciao Tom
     
  5. Geertakw

    Geertakw Kbyte

    Hi

    Annahme:
    Namensliste wird befüllt aus Spalte A ab Zeile 2,
    die Nummern sind in Spalte B

    Als Makro im Quelltext der Userform:
    Private Sub ListBox1_Click()
    zz=ListBox1.listindex
    If zz >= 0 And ListBox1.Value > "" Then
    textbox1.text=ActiveSheet.Cells(zz + 2 , 2).value
    Else
    textbox1.text="??"
    End If
    TextBox1.SetFocus
    End Sub

    Da der erste Listenindex 0 ist, ergibt sich der Ausdruck: zz+2

    HTH

    G.
     
  6. thschmalz

    thschmalz Kbyte

    Hallo,

    Listbox wird befüllt aus Spalte P ab Zeile 4 und die Kundennummer steht in Spalte A ab Zeile 4. Wie lautet jetzt das Makro? Habe Schwierigkeiten, das obenstehende Makro entsprechend anzupassen, sorry.

    Ciao Tom
     
  7. thschmalz

    thschmalz Kbyte

    Hallo Zusammen,

    habe eine Lösung gefunden, die sicherlich umständlich ist, aber die funktioniert. Folgendes habe ich getan:

    In der Kundentabelle sind in Spalte A ab Zeile 4 die Kundennummern eingetragen. In Spalte C die Nachnamen und in Spalte D die Vornamen. Da es nun mehrere Kunden mit gleichem Nachnamen gibt, habe ich ein Feld in Spalte P eingefügt, dass den Nachnamen sowie den Vornamen enthält mit der Formel =C4&" "&D4.

    In meiner Rechnungstabelle habe ich zwei weitere Felder eingefügt. In ein Feld wird der ermittelte Name (Nachname und Vorname) geschrieben und im zweiten Feld wird die korrekte Kundennummer ermittelt mit folgender Formel =INDEX(KUNDEN!A:A;VERGLEICH(P30;KUNDEN!P:P;0)). Diese beiden Felder brauche ich für mein Userform, um daraus die Kundennummer abzulesen.

    In meiner Userform wird dann folgender Code benutzt
    -----------------------------
    Private Sub ComboBox1_AfterUpdate()

    cc = ComboBox1
    [p30] = cc
    xx = [p35]
    Me.TextBox1.Value = xx
    Me.TextBox1.Visible = True

    End Sub
    ----------------------------
    Private Sub ComboBox1_DropButtonClick()

    Me.ComboBox1.RowSource = "KUNDEN!P4:P2000"

    cc = ComboBox1
    [p30] = cc
    xx = [p35]
    Me.TextBox1.Value = xx
    Me.TextBox1.Visible = True

    End Sub
    ---------------------------
    Private Sub CommandButton1_Click()

    Dim varWert As Variant
    varWert = Me.TextBox1.Value
    [EIN] = varWert

    Unload Me

    End Sub
    -------------------------------
    Private Sub CommandButton2_Click()

    Unload Me

    End Sub
    -------------------------------

    Sobald das Kombinationsfeld in der Userform mit einem Namen ausgewählt ist, erscheint nach Aktualisierung des Feldes in der Textbox die aus der Tabelle ermittelte Kundennummer. Mit meinem Button1 wird diese Nummer in meine Rechnungstabelle eingefügt.

    Das ist wie schon erwähnt eine sehr umständliche Art mein Problem zu lösen, aber auch über Umwege kommt man ans Ziel. Wer trotzdem noch die richtige Vorgehensweise kennt, würde ich den Code dafür gerne entgegennehmen, man lernt ja nie aus.

    Vielen Dank bisher für Eure Hilfe.

    Ciao Tom
     
  8. Hascheff

    Hascheff Moderator

    Sieht doch gut aus!
    Aber mit UserForms hab ich auch nicht viel Ahnung.
     
  9. thschmalz

    thschmalz Kbyte

    Hi,

    Du hast recht, es sieht gut aus. Habe noch einen Vorteil herausgefunden. Stellenweise sind die Namen und Vornamen mehrfach vergeben, weil ein Kunde z.B. verschiedene Fahrzeuge hat und damit in die Werkstatt kommt. Erweitere ich jetzt das Feld P in der Tabelle KUNDEN noch um die Kundennummer (Nachname Vorname Kundennummer) erscheint in der ComboBox in der Userform auch diese Auswahl und kann dann schon hier sehen, welche Kundennummer ich auswählen möchte, da ja vorher nur die erste Kundennummer und nicht die weiteren angezeigt werden würde. Anhand der angefügten Kundennummer wird das Feld P spezifischer.

    Ciao Tom
     
Thread Status:
Not open for further replies.

Share This Page