Microsoft Excel

Herbers Excel/VBA-Archiv

Excel Userform Daten aus Tabelle anzeigen


Betrifft: Excel Userform Daten aus Tabelle anzeigen
von: SF
Geschrieben am: 19.12.2018 20:34:35

Hallo zusammen

Ich habe eine Userform bei der am Schluss eine Bestimmte Zelle aus der Tabelle angezeigt werden soll wenn bestimmte "If" Bedingungen erfüllt sind. Bis jetzt verwende ich 2 Listboxen und 3 Option Buttons und 1 CommandButton sowie 2 Labels. Eventuell ist das Anzeigen in einem Label nicht optimal, daher wäre ich zusätzlich auf eure Vorschläge angewiesen. Habe das Label gewählt, da ich etwas "nicht anklickbares" oder "reinschreibbares" will, es soll wirklich nur die Information aus der entsprechenden Zelle aus der Tabelle anzeigen.

Beim Öffnen der Userform wird zuerst die erste ListBox mit Informationen aus der Tabelle gefü _
llt. Der Code dazu:


Private Sub UserForm_Initialize()
Dim arrFill As Variant
arrFill = Sheets("Tabelle1").[A4:A12]
ListBox1.List() = arrFill
End Sub

Das funktioniert soweit.
Wenn nun in der ersten ListBox ein bestimmtes Item angeklickt wird, soll die zweite ListBox wiederum mit Bestimmten Informationen aus der Tabelle gefüllt werden. Wenn nun in der ersten ListBox vom Einen zum Anderen Item geklickt wird, soll auch die zweite ListBox entsprechend aktualisiert werden.

Den Code dazu für die Abfrage, ob der Wert vom ersten Feld (A4) = Test ist:

Private Sub ListBox1_Click()
If ListBox1.Value = "TEST" Then
     'Liste leeren
     ListBox2.Clear
     'Liste füllen
     Dim arrFilltest As Variant
     arrFilltest = Sheets("Tabelle1").[D4:D10]
     ListBox2.List() = arrFilltest
End If

Das funktioniert soweit auch und die zweite ListBox wird mit den Werten von D4 bis D10 gefüllt.
Die Items von der zweiten ListBox gibt es in 3 Ausführungen. Für jede Ausführung ein
OptionButton. Falls ein Button angeklickt wird, werden die anderen Beiden auf "False" gesetzt und nur der Ausgewählte wird "True". Falls jetzt das Item "Test" in der zweiten ListBox angeklickt ist und der OptionButten6 auch angeklickt ist, dann soll die Caption der beiden Labels entsprechend der Zelle aus der Tabelle sein.
Den Code dazu:

Private Sub OptionButton6_Click()
UserForm1.OptionButton7.Value = False
UserForm1.OptionButton8.Value = False
UserForm1.OptionButton6.Value = True
If ListBox2.Value = "Test" And UserForm1.OptionButton6.Value = True Then
    Label4.Caption = Worksheets("Tabelle1").Range("P4")
    Label6.Caption = Worksheets("Tabelle1").Range("S4")
End If
End Sub

Das funktioniert soweit auch, jedoch:
Aktuell muss die Reihenfolge von ListBox1 + ListBox2 + Button eingehalten werden, damit der Wert aus der Tabelle angezeigt wird. Wie schaffe ich es, damit z.b auch die Kombination von ListBox1 + Button + ListBox2 geht?


Der CommandButton hat die Funktion, dass alles zurück gesetzt werden soll. Aktuell mit dem Code: _

Private Sub CommandButton1_Click()
ListBox2.Clear
ListBox1.ListIndex = -1
UserForm1.OptionButton6.Value = False
UserForm1.OptionButton7.Value = False
UserForm1.OptionButton8.Value = False
End Sub

Nun möchte ich mit diesem CommandButton auch die Label.Caption wieder entfernen. Da ja sowieso die OptionButtons auf "False" gesetzt werden ist ja die Zuordnung nicht mehr aktiv. Die Zuordnung auf eine leere Zeile nützte nichts. Wie kann ich das lösen, dass dort nichts mehr angezeigt wird?

Ähnlich zum CommandButton soll die Label.Caption auch zurück gesetzt werden, wenn in der ListBox2 ein anderes Item anklicke wird. Zudem auch beim Klick in der ersten ListBox auf ein anderes Item.

Vielen Dank für eure Unterstützung.

Gruss :-)

  

Betrifft: AW: Excel Userform Daten aus Tabelle anzeigen
von: Bernd
Geschrieben am: 20.12.2018 07:26:49

Servus SF,

setze die jeweilige Caption doch einfach auch auf "".

Private Sub CommandButton1_Click()
ListBox2.Clear
ListBox1.ListIndex = -1
UserForm1.OptionButton6.Value = False
UserForm1.OptionButton7.Value = False
UserForm1.OptionButton8.Value = False
Label1.Caption = ""
Label2.Caption = ""
End Sub
Grüße, Bernd


  

Betrifft: AW: Excel Userform Daten aus Tabelle anzeigen
von: SF
Geschrieben am: 20.12.2018 18:37:10

Hallo Bernd

Vielen Dank für deine schnelle Antwort.

Das mit dem .Caption = " " funktioniert sehr gut und wurde auch gleich eingebaut.

Bezüglich der Ausgabe des Wertes im Label.
Momentan muss der Benutzer zuerst auf das Item in der ListBox2 klicken und danach auf einen der OptionButtons damit ein Wert im Label erscheint. Kann ich die Abfrage auch "eleganter" lösen, damit eigentlich egal ist, ob zuerst auf den OptionButton oder auf das Item in der ListBox2 geklickt wird?
Aktuell ist der Code für die Abfrage wie folgt:

Private Sub OptionButton6_Click()
UserForm1.OptionButton7.Value = False
UserForm1.OptionButton8.Value = False
UserForm1.OptionButton6.Value = True
If ListBox2.Value = "Test" And UserForm1.OptionButton6.Value = True Then
    Label4.Caption = Worksheets("Tabelle1").Range("P4")
    Label6.Caption = Worksheets("Tabelle1").Range("S4")
End If
End Sub
Habe mal einen Versuch gemacht in dem ich während der IF Abfrage noch ein Or eingebaut habe und dann die Bedingungen getauscht habe. Jedoch funktionierte das nicht.
If ListBox2.Value = "test" And UserForm1.OptionButton6.Value = True 
Or UserForm1.OptionButton6.Value And ListBox2.Value = "test" Then

Gruss, SF


  

Betrifft: AW: Excel Userform Daten aus Tabelle anzeigen
von: Bernd
Geschrieben am: 21.12.2018 09:00:31

Servus SF,

die Reihenfolge der Kriterien der IF-Abfrage ist egal. Im Endeffekt müssen beide Kriterien erfüllt sein, damit in den IF-Zweig eingebogen wird.
Wenn nur ein Kriterium erfüllt sein muss, dann mach aus dem "AND" ein "OR".

Private Sub OptionButton6_Click()
UserForm1.OptionButton7.Value = False
UserForm1.OptionButton8.Value = False
UserForm1.OptionButton6.Value = True
If ListBox2.Value = "Test" OR UserForm1.OptionButton6.Value = True Then
    Label4.Caption = Worksheets("Tabelle1").Range("P4")
    Label6.Caption = Worksheets("Tabelle1").Range("S4")
End If
End Sub
Für weitere Hilfestellung wäre es nützlich die Datei zu sehen...

Grüße, Bernd


  

Betrifft: AW: Excel Userform Daten aus Tabelle anzeigen
von: SF
Geschrieben am: 21.12.2018 12:59:27

Hallo Bernd

Danke für den Input bezüglich File-Upload, hätte ich eigentlich auch selber drauf kommen sollen.
http://www.herber.de/bbs/user/126257.xlsm

Ich glaube, dass ich den Fehler gefunden habe, jedoch nicht weiss, wie ich das beheben kann.

Die If Funktion wird nur bei einem Klick auf den OptionButton ausgeführt. Das heisst, mein Problem ist demnach nicht die Reihenfolge ansich, sondern, dass die Ausgabe auch dann ausgeführt wird, wenn als letztes in die ListBox2 geklickt wurde. Entweder müsste die If Bedingung auch in die ListBox2 geschrieben werden oder die Abfrage nach der Bedingung läuft im Hintergrund und erkennt automatisch ob die Bedingung erfüllt wurde.

Gruss
SF