Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dynamische Userform mit intelligenter Tabelle

Dynamische Userform mit intelligenter Tabelle
12.03.2018 13:00:22
JayJay
Hallo zusammen,
ich habe mal meine Datei beigefügt.
https://www.herber.de/bbs/user/120356.xlsm
Folgendes Problem: ich möchte über eine dynamische Userform eine Einkaufsliste generieren lassen.
Über ein Klicken auf die Schaltfläche öffnet sich meine Userform mit Checkboxen. Die Checkboxen passen sich dynamisch über die Einträge in der Spalte G an.
Soweit so gut - das funktioniert auch schon wunderbar. Nur leider ist die Auswahl der Produkte immer ab Zelle G1 gültig. Ich würde nun gerne das Ganze im Quellcode umschreiben, dass die Quelldaten sich aus einer intelligenten Tabelle ("Tb_Einkaufsliste[Name]") beziehen. Die intelligente Tabelle befindet sich "irgendwo" auf diesem Tabellenblatt.
Wie kann ich das realisieren?
Ich bin über jeden Hinweis dankbar! :)
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamische Userform mit intelligenter Tabelle
12.03.2018 13:08:20
Daniel
HI
du kannst die Zellbereiche der intelligenten Tabelle über RANGE ansprechen.
deine Schleife zum einlesen musst du so ändern:
Dim Zelle as Range
For each Zelle in Range("Tb_Einkaufsliste[Name]")
opt.Caption = Zelle.Value
Next
wobei ich mir immer die Frage stelle, ob es in solchen Fällen nicht einfacher ist, anstatt der vielen Checkboxen eine einzige Multiselect-Listbox zu verwenden.
Da hast du nur ein Steuerelement anstatt vieler, erst zur Laufzeit erstellen.
Gruß Daniel
Anzeige
AW: Dynamische Userform mit intelligenter Tabelle
12.03.2018 13:17:59
JayJay
Hallo Daniel,
danke für deine schnelle Rückmeldung. Irgendwie wählt er bei mir allerdings immer nur den letzten Eintrag der intelligenten Tabelle an und zeigt somit auch nur eine Checkbox an.
Ich habe die Datei nochmal hochgeladen - vielleicht habe ich irgendwas übersehen!?
https://www.herber.de/bbs/user/120357.xlsm
Über die Multiselect-Listbox habe ich auch schon nachgedacht, macht aber für mein weiterführendes Vorhaben wenig Sinn.
LG JayJay
Anzeige
Alles Chekboxen sind übereinander,top=20 ! (owT)
12.03.2018 13:26:00
EtoPHG

AW: Dynamische Userform mit intelligenter Tabelle
12.03.2018 13:27:55
Daniel
Hi
weiß ich nicht.
hier deine ursprüngliche Datei mit meinen Änderungen, die funktioniert.
https://www.herber.de/bbs/user/120359.xlsm
die unterschiede zu deinem Code kannst du ja selber raussuchen.
Gruß Daniel
Anzeige
AW: Dynamische Userform mit intelligenter Tabelle
12.03.2018 13:27:56
Daniel
Hi
weiß ich nicht.
hier deine ursprüngliche Datei mit meinen Änderungen, die funktioniert.
https://www.herber.de/bbs/user/120359.xlsm
die unterschiede zu deinem Code kannst du ja selber raussuchen.
Gruß Daniel
AW: Dynamische Userform mit intelligenter Tabelle
12.03.2018 13:59:24
JayJay
Klappt perfekt - danke!
Anzeige
AW: Dynamische Userform mit intelligenter Tabelle
13.03.2018 13:39:45
JayJay
Hallo zusammen,
mein Problem hat sich nun erweitert.
Ich habe nun eine Userform, die sich dynamisch erweitert - funktioniert prima.
Nun möchte ich allerdings mehrere Dinge lösen: in den Eingabefeldern soll zunächst ein "€" Zeichen als Vorgabe eingetragen werden, das den Nutzer auf die einzugebenden Werte hinweist.
Dann sollen die Eingabefelder nur Zahlenformate (mit einer Kommastelle) zulässt - sämtliche Text- oder Mischformate sollen ungültig sein.
Die eingegebenen Werte sollen mit einem Klick auf den Übernehmen-Button in die zweite intelligente Tabelle übernommen werden.
Ich hoffe, ihr könnt mit der beigefügten Datei etwas anfangen:
https://www.herber.de/bbs/user/120380.xlsm
LG
JayJay
Anzeige
AW: Dynamische Userform mit intelligenter Tabelle
13.03.2018 14:16:48
JayJay
.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Userform mit intelligenter Tabelle


Schritt-für-Schritt-Anleitung

Um eine dynamische Userform zu erstellen, die auf einer intelligenten Tabelle basiert, folge diesen Schritten:

  1. Erstelle eine intelligente Tabelle in Excel:

    • Markiere die Daten, die du verwenden möchtest.
    • Gehe zu "Einfügen" > "Tabelle" und aktiviere die Option "Meine Tabelle hat Überschriften".
  2. Öffne den VBA-Editor:

    • Drücke ALT + F11.
  3. Füge eine Userform hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Userform".
  4. Füge Checkboxen zur Userform hinzu:

    • Ziehe Checkboxen auf die Userform aus der Toolbox.
  5. Schreibe den Code zum Füllen der Checkboxen:

    • Verwende den folgenden VBA-Code, um die Checkboxen dynamisch mit den Werten aus der intelligenten Tabelle zu füllen:
    Dim Zelle As Range
    For Each Zelle In Range("Tb_Einkaufsliste[Name]")
       Dim opt As MSForms.CheckBox
       Set opt = Me.Controls.Add("Forms.CheckBox.1", Zelle.Value)
       opt.Caption = Zelle.Value
       ' Positioniere die Checkboxen
       opt.Top = (i * 20) ' Beispiel für die Positionierung
       i = i + 1
    Next
  6. Testen der Userform:

    • Starte die Userform und überprüfe, ob die Checkboxen korrekt angezeigt werden.

Häufige Fehler und Lösungen

  • Problem: Nur die letzte Checkbox wird angezeigt
    Lösung: Überprüfe, ob der Code zum Hinzufügen der Checkboxen in einer Schleife korrekt implementiert ist. Achte darauf, dass Du die Checkboxen nicht immer wieder an die gleiche Position setzt.

  • Problem: Checkboxen sind übereinander
    Lösung: Stelle sicher, dass die Positionierung der Checkboxen in der Schleife korrekt ist. Verwende eine Variable, um die Top-Eigenschaft zu erhöhen.


Alternative Methoden

Anstatt mehrere Checkboxen zu verwenden, kannst Du auch eine Multiselect-Listbox in Betracht ziehen. Diese Methode ist einfacher zu handhaben, da Du nur ein Steuerelement anstelle vieler Checkboxen benötigst. Hier ist ein Beispiel, wie Du eine Listbox füllst:

Dim Zelle As Range
For Each Zelle In Range("Tb_Einkaufsliste[Name]")
    Me.ListBox1.AddItem Zelle.Value
Next

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Userform weiter anpassen kannst:

  • Eingabefelder mit Platzhaltern: Füge in die Eingabefelder ein Euro-Zeichen als Platzhalter ein:

    Me.TextBox1.Value = "€"
  • Eingabewerte validieren: Stelle sicher, dass nur Zahlen mit einer Dezimalstelle eingegeben werden. Du kannst dies mit der WorksheetFunction.IsNumber-Methode überprüfen, bevor Du die Werte übernimmst.


Tipps für Profis

  • Verwende Option Explicit: Füge immer Option Explicit am Anfang Deiner Module hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.

  • Fehlerbehandlung implementieren: Füge Fehlerbehandlungsroutinen hinzu, um mögliche Laufzeitfehler elegant zu handhaben.


FAQ: Häufige Fragen

1. Wie kann ich die Userform automatisch schließen, nachdem die Auswahl getroffen wurde?
Du kannst die Userform mit Unload Me schließen, nachdem Du die Werte übernommen hast.

2. Gibt es eine Möglichkeit, die Userform zu resetten?
Ja, Du kannst alle Checkboxen und Eingabefelder zurücksetzen, indem Du in einer Schleife die Value-Eigenschaft auf False setzen und die Textboxen leeren.

3. Wie kann ich die intelligenten Tabellen in anderen Blättern verwenden?
Du kannst auf intelligente Tabellen in anderen Blättern zugreifen, indem Du den Blattnamen in deinem Code angibst, z.B. Worksheets("Blattname").Range("Tb_Einkaufsliste[Name]").

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige