Anzeige
Archiv - Navigation
1288to1292
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 kleine Probleme

Userform kleine Probleme
20.12.2012 11:27:34
Markus
Guten Tag zusammen,
ich hoffe ihr freut Euch alle auf die Feiertage und hab nicht all zu viel Stress.
Nun zu meinem Problem:
Ich bin gerade dabei eine Userform zu erstellen, die die Daten in ein Arbeitsblatt eintragen soll, doch leider habe ich noch ein paar kleine Probleme.
Problem 1:
Sobald ich einen neuen Kursteilnehmer anlege, überschreibt er mit den Alten. Der neue Kursteilnehmer wird nicht in die nächste Freie Zeile eingetragen. Zu Anfang wurde alles im ersten Arbeitsblatt eingetragen, da hat es super geklappt, doch seit dem ich durch Sheets("Datenbank"). die neuen Zellpositionen vergeben habe geht es nicht mehr. Irgendwo scheint noch was angepast werden zu müssen, doch ich seh das leider nicht.
Problem 2:
Ist der erste Kursteilnehmer angelegt, hat man in der Combobox1 die Möglichkeit entweder "Neuen Kursteilnehmer hinzufügen" auszuwählen, dann füllt man unten entsprechend die anderen text und Comboboxen aus, oder aus den bereist angelegten zu wählen. Dann werden die ersten drei Felder entsprechend ausgefüllz. Das auswählen finktioniert leider auch nicht mehr, seit dem ich das auf ein anderes Tabellenblatt verschoben habe.
Problem 3:
Als man es auswählen konnte, ist darauf hin der Eintrag überschrieben worden, der der Auswahl entsprch, anstatt den neu anzulegen.
Problem 4:
Wenn man ich Combobox4 (Firma), eine Firma eingibt, schlägt er autovervollständigung vor. Bei Combobox 2 und 3 nicht, obwohl es der gleiche Code ist.
Ich hoffe ihr könnt mir hierbei helfen.
Vielen Dank schon einmal.
Gruß Markus

Die Datei https://www.herber.de/bbs/user/83091.xls wurde aus Datenschutzgründen gelöscht


15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform kleine Probleme
20.12.2012 11:49:14
hary
Hallo Markus
Du must jetzt auch den Bereichen den Tabellenblattnamen zuweisen.
Bsp.
xZeile = Range("A65536").End(xlUp).Row + 1
geht vom Activem Blatt aus und das passt nicht.
so gehts
xZeile = Sheets("Datenbank").Range("A65536").End(xlUp).Row + 1
also vor allen Range/Columns den Blattnamen vorsetzen bzw. besser mit With arbeiten da brauchst du nur immer einen Punkt vorsetzen.
gruss hary

AW: Bsp. mit with
20.12.2012 11:54:10
hary
Hallo nochmal
Auf die schnelle.
Private Sub CommandButton0_Click()
Dim xZeile As Long
If TextBox1 = "" Then Exit Sub
With Sheets("Datenbank")
If ComboBox1.ListIndex = 0 Then
xZeile = .Range("A65536").End(xlUp).Row + 1
Else
xZeile = ComboBox1.ListIndex + 1
End If
.Cells(xZeile, 1) = TextBox1
.Cells(xZeile, 2) = TextBox2
.Cells(xZeile, 3) = ComboBox4
.Cells(xZeile, 4) = ComboBox2
.Cells(xZeile, 5) = ComboBox3
.Cells(xZeile, 6) = TextBox5
.Cells(xZeile, 7) = TextBox6
.Cells(xZeile, 8) = TextBox7
TextBox1 = ""
TextBox2 = ""
ComboBox4 = ""
ComboBox2 = ""
ComboBox3 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
.Columns("A:H").Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
UserForm_Initialize
End Sub

gruss hary

Anzeige
AW: und mappe zurueck
20.12.2012 12:58:26
Markus
Hallo Hary,
Danke erstmal. Genau so sollte es aussehen.
Wenn mann jetzt einen Kursteilnehmer angelegt hat und man wählt ihn über die Combobox1 aus und übernimmt dann, dann überschreibt er diesen anstatt ihn als neuen Eintrag anzulegen.
Das liegt doch sicherlich an "ComboBox1.Clear " oder nicht?

AW: Mappe geht nicht
20.12.2012 13:23:08
hary
Hallo Markus
Kann nicht weiterhelfen, die Mappe hat 'ne Macke bekommen. Ich bekomme sie nicht auf. Bekomme den VBA Verweis auch nicht rein.
gruss hary

Anzeige
AW: Mappe geht nicht
20.12.2012 13:29:49
hary
Hallo Markus
Kann nicht weiterhelfen, die Mappe hat 'ne Macke bekommen. Ich bekomme sie nicht auf. Bekomme den VBA Verweis auch nicht rein.
gruss hary

AW: Mappe geht nicht
20.12.2012 13:36:16
Markus
Hallo Hary,
ich habe die Datei noch mal hochgeladen. Ich ist schon ein wenig weiter. PW von der userform 2 ist "Test", sieht du aber sonst auch im VBA code.
https://www.herber.de/bbs/user/83095.xls

Anzeige
AW: Mappe geht nicht
20.12.2012 13:57:38
hary
Hallo Markus
Danke Matthias
Es liegt daran:
 If ComboBox1.ListIndex = 0 Then
xZeile = .Range("A65536").End(xlUp).Row + 1
Else
xZeile = ComboBox1.ListIndex + 1
End If

Wenn etwas ausgewaehlt ist ist der ListIndex ungleich 0
Ist bei aenderungen richtig.
sonst nur so.
xZeile = .Range("A65536").End(xlUp).Row + 1
gruss hary

noch ein paar kleine Hinweise ...
20.12.2012 15:19:49
Matthias
Hallo Markus
Hier noch 2 kleine Anmerkungen
Die Erste
Private Sub CommandButton1_Click()
Dim PW As String
PW = "Test"
If TextBox1.Text = "" Then
MsgBox "Bitte Passwort eingeben"
ElseIf TextBox1.Text = "Test" Then
Datenbank.Show
Unload UserForm2
Else
MsgBox "Passwort stimmt nicht überein." & vbCrLf & "Achten Sie auf Groß- und Kleinschreibung. _
" & vbCrLf & _
"Versuchen Sie Ihr Glück erneut.", vbInformation
   TextBox1.Text = ""
TextBox1.SetFocus
End If
End Sub
Das Zeichen "*" für PasswordChar kannst Du schon vorher direkt in den Eigenschaften der Textbox festlegnen.


und die Zweite
Userbild
Den Tippfehler bei Aktivierreihenfolge kannst versuchen bei Ebay zu verkaufen ;-)
Datei war schon hochgeladen und nicht mehr zu ändern.
So dann halt ich mich jetzt mal wieder raus, bis ich was von Dir höre und lösch die Textbox4 in Frame2.
Gruß Matthias

Anzeige
und die Textbox4 sollte gelöscht werden
20.12.2012 13:37:32
Matthias
Hallo
Im Frame ist eine Textbox(Textbox4) versteckt die evtl. noch keiner bemerkt hat.
Die wird aber nicht benutzt. Also weg damit! Oder ?
Userbild
Gruß Matthias

AW: und die Textbox4 sollte gelöscht werden
21.12.2012 09:10:36
Markus
Guten Morgen zusammen,
zunächst einmal danke hary für das Optimieren des Codes, man sieht gleich wenn ein Fachmann dran ist.
Auch ein Danke an Matthias, wieder was gelernt. Was man nicht alles in den Eigenschaften einstellen kann, muss man aber auch erstmal wissen. Aktivierungreihenfolge ist jetzt definiert, ;).
Ich hab allerdings noch 2 Probleme: In der Combobox werden, sofern man keinen neuen Kursteilnehmer anlegen möchte, alle bis dato eingetragenen Kursteilnehmer zur Auswahl gestellt, sprich es gibt doppler. Wählt man nun einen aus, übernimmt er diesen, es ist aber so, dass er nicht den Namen übernimmt, um diesen dann als neue Position anzulegen, sodern er referenziert auf den entsprechenden Eintrag, sprich wenn ich dann einen neuen Kurs auswähle, überschreibt er den alten, anstatt diesen in die nächste Zeile neu anzulegen.
Das wäre gegen die Dopplung,
Set Teilnehmer = CreateObject("Scripting.Dictionary")
For TeilnehmerZ = 2 To .Cells(.Rows.Count, 1) & "," & .Cells(.Rows.Count, 2).End(xlUp).Row
Teilnehmer(.Cells(TeilnehmerZ, 1) & "," & .Cells(TeilnehmerZ, 2).Value) = 0
Next
Me.ComboBox1.List = Teilnehmer.keys
aber wie baue ich dies gescheit hier ein?
.
.
ComboBox1.AddItem "Neuen Kursteilnehmer hinzufügen"
For i = 2 To aRow
ComboBox1.AddItem .Cells(i, 1) & ", " & .Cells(i, 2) & " - " & .Cells(i, 3)
Next i
ComboBox1.ListIndex = 0
.
.
.
Anbei die neuste version.
https://www.herber.de/bbs/user/83103.xls

Anzeige
AW:versteh nicht ganz
21.12.2012 11:46:54
hary
Moin Markus
Verstehe ich nicht ganz. Einerseits moechtest du in CBO1 die Namen und die belegten Kurse haben und anderseits keine Doppler.
Versuch mal so. Was neu im Code ist ist auskommentiert.
https://www.herber.de/bbs/user/83105.xls
gruss hary

AW: AW:versteh nicht ganz
21.12.2012 13:10:52
Markus
Hallo hary,
das ist super!! Jetzt legt er den Kursteilnehmer neu an anstatt ihn zu überschreiben.
Was ich mit ohne Doppler meinte ist, dass ich den Kursteilnehmer in der Auswahl nur einmal benötige sofern er angelegt ist, ob er nun 8 mal in der Datenbank steht weil er unterschiedliche Kurse belegt hat, soll in CBO1 egal sein. Jetzt würde er dann 8 mal zur Auswahl stehen.
Noch einmal Danke für deine Hilfe, ist echt top hier. Man findet und bekommt immer eine Antwort.
Gruß Markus

Anzeige
AW: AW:versteh nicht ganz
21.12.2012 15:35:27
hary
hallo Markus
Versuch mal jetzt. Irgendwo is der Wurm bei mir drin. Deine Mappe wird immer zerschossen.
https://www.herber.de/bbs/user/83112.xlsm
gruss hary
zu Not:
Private Sub UserForm_Initialize()
'Kursteilnehmer
Dim Firma As Object
Dim FirmaZ As Long
Dim Trainer As Object
Dim TrainerZ As Long
Dim Kurs As Object
Dim KursZ As Long
Dim Teilnehmer As Object
Dim TeilnehmerZ As Long
Dim aRow, i As Long
Application.EnableEvents = False
ComboBox1.Clear
With Sheets("Datenbank")
aRow = .Range("A65536").End(xlUp).Row
ComboBox1.AddItem "Neuen Kursteilnehmer hinzufügen"
Set Teilnehmer = CreateObject("Scripting.Dictionary")
For TeilnehmerZ = 2 To aRow
Teilnehmer(.Cells(TeilnehmerZ, 1) & "," & .Cells(TeilnehmerZ, 2).Value) = 0
Next
Me.ComboBox1.List = Teilnehmer.keys
ComboBox1.ListIndex = 0
Application.EnableEvents = True
'Schleife zum Füllen der ComboBox2 (Kurs) mit den Daten aus Blatt "Datenbank" ohne dopplete  _
Einträge
'Spalte D ab Zeile 2 bis zur letzten gefüllten Zeile
Set Kurs = CreateObject("Scripting.Dictionary")
For KursZ = 2 To .Cells(.Rows.Count, 4).End(xlUp).Row
Kurs(.Cells(KursZ, 4).Value) = 0
Next
Me.ComboBox2.List = Kurs.keys
'Schleife zum Füllen der ComboBox3 (Trainer) mit den Daten aus Blatt "Datenbank" ohne dopplete  _
Einträge
'Spalte E ab Zeile 2 bis zur letzten gefüllten Zeile
Set Trainer = CreateObject("Scripting.Dictionary")
For TrainerZ = 2 To .Cells(.Rows.Count, 5).End(xlUp).Row
Trainer(.Cells(TrainerZ, 5).Value) = 0
Next
Me.ComboBox3.List = Trainer.keys
'Schleife zum Füllen der ComboBox4 (Firma) mit den Daten aus Blatt "Datenbank" ohne dopplete  _
Einträge
'Spalte C ab Zeile 2 bis zur letzten gefüllten Zeile
Set Firma = CreateObject("Scripting.Dictionary")
For FirmaZ = 2 To .Cells(.Rows.Count, 3).End(xlUp).Row
Firma(.Cells(FirmaZ, 3).Value) = 0
Next
Me.ComboBox4.List = Firma.keys
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige