Userform Excel 2007

Hallo Zusammen

Ich habe vor eine Tabelle per Abfrage über eine Datenmaske zu füllen. Ich bin soweit gekommen, dass ich ein Userform erstellen muss.

Im VBA Editor habe ich das „Gerüst“ bereits erstellt. Es besteht aus 8 Abfrageelementen:
1.) combobox 1
2.) textbox 1
3.) combobox 2
4.) textbox 2
5.) combobox 3
6.) combobox 4
7.) textbox 3
8.) combobox 4

Die Comboboxen sollen mit Listen aus der Tabelle 3 gefüllt werden. Ich habe dazu folgendes geschrieben:

Private Sub UserForm_Activate()
ComboBox1.List = Sheets(„Tabelle3“).Range(„b1:b20“).Value
ComboBox2.List = Sheets(„Tabelle3“).Range(„d1:d20“).Value
ComboBox3.List = Sheets(„Tabelle3“).Range(„f1:f20“).Value
ComboBox4.List = Sheets(„Tabelle3“).Range(„g1:g20“).Value
End Sub

Tjoa, und nun komme ich nicht weiter :frowning:

Problem 1:
Eigentlich sollten sich die Comboboxen 3 und 4 aufeinander beziehen. Das heißt: steht in Box3 „Tabelle 3 f1“ dann soll die Box 4 nur eine Liste zur Verfügung stellen die in Tabelle 3 in der Spalte g1:g20 steht. Wenn in der Box 3 „Tabelle 3 f2“ steht, dann soll die Liste aus Tabelle 3 h1:h20 zur Auswahl stehen.

Problem 2:
Ich habe zusätzlich zu den Text und Comboboxen zwei CommandButton („Eintragen“; „Abbrechen“)
Der erste Button „Ok“ beinhaltet derzeit folgeneden Eintrag:

Private Sub CommandButton1_Click()
Dim z As Integer
z = Range(„A65565“).End(xlUp).Row + 1
Cells(z, 1) = ComboBox1
Cells(z, 2) = TextBox1
Cells(z, 3) = ComboBox2
Cells(z, 4) = TextBox2
Cells(z, 5) = ComboBox3
Cells(z, 6) = ComboBox4
Cells(z, 7) = TextBox3
Cells(z, 8) = TextBox4
End Sub

Diese beiden Befehle habe ich mir aus Excel-Hilfen im Internet zusammen gebastelt. Aber ich denke, dass ihr gleich seht, dass ich wenig Ahnung davon habe…

Vorausgesetzt, dass der „Befehl“ im Button richtig ist, würde sich das Userform nach klicken schließen oder bliebe es offen, so dass man noch weitere Zeilen eintragen kann? Das wäre nämlich notwendig

Aber der „Abbrechen“-Button hat noch nichts drin stehen…

Problem 3:
Die Datenmaske sollte mit öffnen der Datei geöffnet werden.
Die enthaltende Tabelle sollte Schreibgeschützt sein, so dass tatsächlich nur über die Datenabfrage Einträge gemacht werden können. Allerdings sollte die Möglichkeit eines Filters (auto-Filter?) bestehen bleiben.

Problem 4:
Es ist notwendig das nach und nach Zeilen inaktiv gesetzt werden müssten. Vielleicht mit einem Kontrollkästchen? Wenn man zwei identische Tabellenblätter hat, kann man dann vielleicht die inaktiv gesetzte Zeile in der Tabelle1 löschen und in das Tabellenblatt 2 verschieben, mit dem Verweis „erledigt“?

Puh, ich hoffe ich habe mich verständlich ausgedrückt.
Ich hoffe ihr könnt mir helfen…

Vielen Dank und viele Grüße

ok, ich habe jetzt gerade selber noch mal ausprobiert, ob das was ich da selber gebastelt habe funktioniert ;o)

Also die Datenmaske trägt die Werte in den richtigen Zeilen in der Tabelle ein!! Das ist doch schon mal gut für „keine Ahnung“ ;o)

Allerdings müsste sie dahin gehend optimiert werden, dass wenn man „ok“ klickt und die eingetragenen Daten in der Tabelle eingefügt werden, die Daten in der Abfragemaske wieder gelöscht werden. Sonst kann ich ja keine zweite Zeile eintragen???

UND: die Listen die ich hinterlegen wollte werden in dem DropDown Fenstern der Comboboxen nicht gezeigt :frowning: die sind leer :frowning:

Hallo E-Eis,

lade bitte mit fileuplaod o.ä. genauer Link s. FAQ:2606 deine Mappe hoch.

Vorher beachte diese Tipps die dir später das Leben einfacher machen.
Gib deinen Elementen auf der UF sprechende Namen.
Gehe in den Vba-Editor sodaß du die UF siehst, dann drücke F4.
Jetzt klickst du nacheinander deine Elemente an und änderst bei der
Eigenschaft Name den Namen.

z.B. aus
CommandButton1 wird dann cmbEintragen,
CommandButton2 wird dann cmbAbbrechen,
ComboBox1 wird dann cbName,
ComboBox2 wird dann cbPLZ,
TextBox1 wird dann tbName,
TextBox2 wird dann tbPLZ,
Diese Namen benutzt du dann auch im Code.

Diese einmalige Vorgehensweise erspart dir jedesmal wenn du den Code
vor dir hast das nachdenken was denn nun TextBox1 oder TextBox ist,
Name oder PLZ.

K.A. wo du das im Internet gefunden hast:

Dim z As Integer
z = Range(„A65565“).End(xlUp).Row + 1

Es scheint aus einer Version vor Xl2007 zu stammen ist aber fehlerhaft in zweifacher Hinsicht.
Frühere Versionen haben 655 3 6 Zeilen, Range(„A65 5 65“) erzeugt daher sofort einen Fehler.

Der zweite Fehler ist, Integer geht nur bis 32xxx, also gibt es auch
einen Fehler wenn du mehr als 32xxx Zeilen hast.

Für dich sicher erfreulich, es gibt da eine Variante, die in allen
Versionen funktioniert.

Dim z As Long
z = cells(rows.count,1).End(xlUp).Row + 1
das kannste auch so schreiben wenn dir Cells() nocht nicht so vertraut wie Range() ist:
z = cells(rows.count,„A“).End(xlUp).Row + 1

Diese Formel versagt in zwei Fällen.
Ist Spalte A komplett leer, so ist z dann 2.
Ist deine Spalte A komplett gefüllt gibt es einen Fehler, denn
es gibt keine Zelle unter der untersten Zelle.
Aber seltenst liegt das vor. Wichtig ist nur warum du dich da nicht
über einen Fehler wunderst.

Mit dem Zellen inaktiv setzen habe ich (noch) nicht verstanden.

Gruß
Reinhard

Hallo Reinhard

Danke erstmal für die ersten leichteren Tipps ;o)

Anbei der Link zur Datei

http://www.file-upload.net/download-4330134/test.xls…

Wichtig ist halt auch, dass die Spalten „Abteilung“ und „Mitarbeiter“ abhängig von einander sind. Also wenn in Abteilung „Vertrieb“ steht dann sollen NUR die Namen Müller bis Witt angezeigt werden. Wenn in Abteilung „Einkauf“ steht nur die Namen Bolte bis Dietrich (die Listen stehen in Tabelle 3)

Was hast du bei dem inaktiv setzen noch nicht verstanden? Wie kann ich es besser erklären?
Also ich hätte gerne ein Kontrollkästchen o.ä.hinter jeder Zeile, dass wenn ich es ankreuze diese Zeile inaktiv setzt. D.h. die Zeile wird zum Beispiel grau und „verschwindet“ aus dieser Tabelle und wird auf das Tabellenblatt 4 in eine Tabelle verschoben in der die erledigten Zeilen aufgelistet werden. Ist das besser erklärt?

Viele Grüße

Hallo Reinhard
hat das mit meiner Datei geklappt?
hast du vielleicht einen Rat für mich?

Gruß Erdbeereis

hat das mit meiner Datei geklappt?
hast du vielleicht einen Rat für mich?

Hallo Erdbeereis,

mea culpa, sehe deine Mappe eben zum ersten Mal.
Ging irgschendwie unter :frowning:
Ich schau mal…
Frag ruhig übermorgen nochmal nach indem du mich anmailst
durch den Klick auf den Briefumschlag neben meinem Namen,
wenn bis dahin nix von mir kam.

Achja, meine Tipps sind gedacht daß sie auch eingesetzt werden :frowning:

Gruß
Reinhard