Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1616to1620
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

Userform - Auswahlliste

Userform - Auswahlliste
29.03.2018 17:25:03
Robert

Hallo, ich komme einfach nicht weiter und hoffe auf eure Hilfe.
Folgender Sachverhalt:
Ich habe eine Tabelle angelegt.
Zeile1 A=Kundennummer B=E-Mail1 C=E-Mail2 D=E-Mail3 E=E-Mail4 F=E-Mail5
In den weiteren Zeilen stehen dann die einzelnen Werte. Ich habe mir per VBA einen Code geschrieben, der mir in Zelle "K1" eine Kundennummer ausspuckt. Nun suche ich eine Möglichkeit, dass Excel automatisch die Spalte "Kundennummer" nach der Kundennummer aus "K1" sucht und entweder automatisch die zugehörige E-Mail in Zelle "K2" einträgt, oder wenn mehrere E-Mails hinterlegt sind, soll sich eine Userform/MsgBox öfffnen: "Bitte E-Mail auswählen" und mit einem Klick dann eben die gewählte E-Mail in "K2" wiedergeben.
Die Tabelle wird ständig erweitert, manchmal mit nur einer Mail, manchmal aber auch bis zu 5....(5 Wäre dann das Maximum.) Kann mir jemand helfen?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispielmappe bitte
29.03.2018 18:56:48
Werner
Hallo Robert,
du hast doch schon was, dann stell das doch zu Verfügung, lade also deine Datei hoch. Ein paar Spieldaten reichen ja.
Gruß Werner
AW: Userform - Auswahlliste
29.03.2018 19:08:32
Daniel
Blöde Frage:
Warum löst du das nicht mit einem SVERWEIS und 5 Zeilen unter- oder nebeneinander?
Bsp.:
=SVERWEIS($K$1;A:F;2;FALSCH)
Dann ziehst du das über 5 Zeilen nach unten und passt die "2" jedesmal mit einem Wert von +1 an (3, 4, 5, 6).
Dann werden dir alle Email-Adressen der entsprechenden Person angezeigt.
Mit einer WENN-Formel kannst du auch dafür sorgen, dass dann Gott-weiß-was angezeigt wird wenn keine Email-Adressen vergeben sind:
Bsp.:
=WENN(SVERWEIS($K$1;A:F;2;FALSCH)="";"";SVERWEIS($K$1;A:F;2;FALSCH))
Aber das ist nur so eine Idee...
MfG
Daniel
Anzeige
AW: Userform - Auswahlliste
29.03.2018 21:18:39
Daniel
Aber...bei einer so einfachen Sache...würde ich, wenn nicht über die Formel, einfach über ein UserForm gehen und dort Labels einfügen...
Dann gäbe es nen Code im Sheet der durch einen Schalter ausgelöst wird - z.B.:
Private Sub CommandButton1_Click()
Dim varRow As Variant
varRow = Application.Match(Sheets("Kundennummer").Range("K1"), Sheets("Kundennummer").Columns(1) _
, 0)
If Sheets("Kundennummer").Cells(varRow, 3) = "" Then
Sheets("Kundennummer").Range("K2") = Sheets("Kundennummer").Cells(varRow, 2)
Else
UserForm1.Show
End If
End Sub

Damit prüfst du erst, ob zu der KdNr noch eine zweite Email existiert (dabei gehe ich davon aus, dass dieses Formular so gepflegt ist, dass wenn dann sofort die zweite Emailadresse eingetragen ist und da nix leer ist) - wenn nicht, dann wird diese erste Email sofort in "K2" eingetragen - und wenn mehr als die eine existieren, dann wird das UserForm geöffnet...
Und weil das nur 5 maximal sind würde ich mir da gar keinen großen Stress machen und einfach folgendes einfügen:
Private Sub Label1_Click()
Sheets("Kundennummer").Range("K2") = Label1
End Sub

Private Sub Label2_Click()
Sheets("Kundennummer").Range("K2") = Label2
End Sub

Private Sub Label3_Click()
Sheets("Kundennummer").Range("K2") = Label3
End Sub

Private Sub Label4_Click()
Sheets("Kundennummer").Range("K2") = Label4
End Sub

Private Sub Label5_Click()
Sheets("Kundennummer").Range("K2") = Label5
End Sub

Private Sub UserForm_Initialize()
Dim varRow As Variant
varRow = Application.Match(Sheets("Kundennummer").Range("K1"), Sheets("Kundennummer").Columns(1) _
, 0)
UserForm1.Caption = "Email-Auswahl für KdrNr.: " & Sheets("Kundennummer").Range("K1")
Label1 = Sheets("Kundennummer").Cells(varRow, 2)
Label2 = Sheets("Kundennummer").Cells(varRow, 3)
Label3 = Sheets("Kundennummer").Cells(varRow, 4)
Label4 = Sheets("Kundennummer").Cells(varRow, 5)
Label5 = Sheets("Kundennummer").Cells(varRow, 6)
End Sub

Man könnte das alles auch schöner und weniger umfangreich machen...aber ich nehme nicht an, dass es sehr die Perfomance beeinträchtigen würde es so zu machen...
Aber wenn jemand eine schönere Idee hat - ich hab nur mal eben was zusammengeschrieben...ich habs auch nicht getestet, gehe nur davon aus das es funktionieren würde...
MfG
Daniel
Anzeige
AW: Userform - Auswahlliste
04.04.2018 08:30:44
Robert
Hallo, ich melde mich zurück, vielen Dank euch allen und vor allem @Daniel
Dein Code klappt super, habe alles in meine umfangreichere Excel eingebaut, habe aber nun ein Problem, bei dem die Lösung wahrscheinlich sehr einfach ist, ich aber nicht weiter weiß...
Ich habe deinen Code wie folgt umgebaut:
Dim varRow As Variant
varRow = Application.Match(Range("D1"), Workbooks("Auftraege_Mail_Verteilerliste.xlsm").Sheets(" _
Mails").Columns(1), 0)
If Workbooks("Auftraege_Mail_Verteilerliste.xlsm").Sheets("Mails").Cells(varRow, 4) = "" Then
Sheets("Eingabe").Range("B2") = Workbooks("Auftraege_Mail_Verteilerliste.xlsm").Sheets("Mails"). _
Cells(varRow, 3)
Else
UserForm1.Show
End If
Nun gibt er mir "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs" aus und bezieht sich auf diese Zeile:
varRow = Application.Match(Range("D1"), Workbooks("Auftraege_Mail_Verteilerliste.xlsm").Sheets("Mails").Columns(1), 0)
Ich muss zum Vergleich auf eine andere Excel-Datei im gleichen Windows-Ordner zugreifen. Rechtschreibung+Groß- und Kleinschreibung stimmt alles.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige