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

Informationen in Userform laden und überschreiben

Informationen in Userform laden und überschreiben
14.12.2015 13:45:49
Jan
Hallo liebe VBA-Experten,
ich habe eine Frage an euch und hoffe ihr könnt mir helfen.
Ich möchte mit einer UserForm meine bereits vorhandenen bzw. neu eingetragenen Informationen überschreiben.
Ich habe das Layout dazu mal gemacht, damit man sich das besser vorstellen kann.
CB1 soll alle Arbeitsblätter anzeigen. Wähle ich eines aus, sollen in CB2 alle bisher eingetragenen Kunden in dem jeweiligen Arbeitsblatt angezeigt werden (Es kommen aber noch neue Kunden dazu, daher muss die ComboBox automatisch aktualisiert werden). Wenn ich CB2 ausgewählt habe, sollen wiederum in CB3 die dazugehörigen Bauteilbezeichnungen angezeigt werden. Und letztendlich mit CB4 die RFQ-Nummer. Diese 4 Auswahlmöglichkeiten geben eine eindeutige Zeile in meiner Exceltabelle an.
Mal als Bsp:
CB1
Auswahlmöglichkeiten: NOV WS; Nov Integral;
Ich wähle aus: NOV WS
CB2
Auswahlmöglichkeiten: Daimler; Valeo
Ich wähle aus: Daimler
CB3
Auswahlmöglichkeiten: Absorber; BR 213 Boden
Ich wähle aus: Absorber
CB4
Auswahlmöglichkeiten: 8SMER1301; 8SMER1302
Ich wähle aus: 8SMER1301
Anschließend klicke ich auf einen Button: Informationen laden
damit werden alle Infos aus der Zeile endsprechend in die dafür vorgesehenen Text und Comboboxen eingetragen (auch die Stückzahlen im 2. Reiter). Nun kann ich die Infos beliebig ändern und mit einem 2. Button "überschreiben" in meine Tabelle an der entsprechenden Stelle ändern.
Sorry ist etwas länger geworden und evtl auch etwas zu umfangreich. Aber vllt könnt ihr mir ja trotzdem helfen!
Ich bedanke mich schon mal recht herzlich.
Gruß
Jan
https://www.herber.de/bbs/user/102246.xlsm

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Immer diese Userformen...
14.12.2015 18:40:16
Michael
Hallo Jan,
für meinen Geschmack machen UFs eigentlich nur Arbeit; ich habe Dir ein VBA-Grundgerüst gestrickt, und an den entsprechenden Stellen stehen jeweils zwei beispielhafte Zuweisungen für die Übernahme von Tabelle zu UF bzw. umgekehrt - die weiteren Anweisungen solltest Du selbst hinbekommen.
Die Datei: https://www.herber.de/bbs/user/102250.xlsm
Es gab einige Fallstricke:
a) Deine obengenannten CB-Nummern stimmen nicht mit denen im Formular überein. Gemäß Deiner Anforderung habe ich es (evtl. verkehrt) so zugeordnet:
CB1: Anlagentyp
CB2: Kunde
CB3: Bauteilbezeichnung
CB4: RFQ-Nummer
b) Sehr viele Deiner Zellen sind mit Zeilenumbruch formatiert - wirf das bloß raus, denn das führt fast immer zu unvorhersehbaren Ergebnissen: beim ersten Test kam unerwartet 2 x Daimler heraus, wobei die ersten zwei in Deiner Tabelle eben ein CR oder LF (Zeichen 13 bzw. 10) angehängt hatten - so geht es halt nicht...
Ansonsten viel Spaß,
Michael

Anzeige
AW: Immer diese Userformen...
15.12.2015 08:43:13
Jan
Hallo Michael
ja da magst du recht haben, dass sie ne menge Arbeit machen. Aber zum einen finde ich es interessant und zum anderen ist meine Tabelle vom Inhalt viel umfangreicher (wollte nur nicht alle Daten in meine Datei reinpacken).
Ich habe jetzt die Formatierung Zeilenumbruch raus gemacht. Und auch die Zuordnung der CB angepasst.
Es ist jetzt:
CB6: Auswahl des Arbeitsblattes (von mir mit CB1 beschrieben)
CB2: bleibt
CB7: Auswahl der Bauteilbezeichnung (von mir mit CB3 beschrieben)
CB8: Auswahl der RFQ-Nummer (von mir mit CB4 beschrieben
(Obwohl du das fast alles schon richtig gemacht hast!!)
Bei der CB zu "Werk/Schaumart" wird mir meine gewünschte Auswahl angezeigt. Das passt jetzt also schon mal.
Da ich VBA-Neuling bin, muss ich die einzelnen Abschnitte jetzt mal vom Sinn her erfragen, damit ich das verstehe bzw. entstehende Fehlermeldungen nachvollziehen und beseitigen kann.
Private Sub ComboBox2_Enter()
'Zweite Combobox in Abhängigkeit von Combobox1.
'Jeder Kunde wird einmalig angezeigt.
Set mobjDic = CreateObject("Scripting.Dictionary")
C_mstrDatenblatt = ComboBox6.Text
mlngLast = Worksheets(C_mstrDatenblatt).Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets(C_mstrDatenblatt)
For mlngZ = 3 To mlngLast
mobjDic(.Cells(mlngZ, 1).Value) = 0
Next
End With
Me.ComboBox2.List = mobjDic.keys
Set mobjDic = Nothing
End Sub
Bei dem fettgedruckten kommt bei mir ein Fehler den ich leider nciht nachvolliehen kann.
Ich hoffe du kannst mir dabei helfen.
Und natürlich schon mal vielen Dank für deine bisherige Hilfe, einige Teile konnte ich schon für mich entschlüsseln!! :)
Gruß
Jan

Anzeige
AW: Immer diese Userformen...
15.12.2015 08:57:48
Jan
Ok ich habe meinen Fehler bereits selbst gefunden. ;)

AW: Immer diese Userformen...
15.12.2015 11:38:39
Jan
Hallo Michael,
ich habe jetzt ein wenig gebastelt und meine UserForm soweit eingerichtet.
2 (kleine) Dinge passen aber leider noch nicht:
1. Wenn ich nicht mit der ComboBox "Werk/Schaumart" anfange auszuwählen, sondern z.B. mit "Kunde" dann öffnet sich der Debugger. Ich verstehe auch wieso, weiß aber nicht, wie ich es verhindern kann (z.B. mit ner MsgBox, in der ein Hinweis steht).
2. Wenn ich z.B. unter "NOV WS - Daimler - BR 213 Boden - 8SMER1304" suche, öffnet sich ebenfalls der Debugger. Auch da verstehe ich wieso. In meiner Exceltabelle sind Zellen leer, die aber in die UF übertragen werden sollen. Anscheinend muss man im Code etwas ergänzen, dass dem Programm klar macht, dass wenn die Zelle leer ist die jeweilige Box ebenfalls leer bleiben soll. Aber auch da bin ich auf keine Lösung gekommen.
Im Anhang meine Datei. Danke für die Hilfe ;)
Gruß
Jan
https://www.herber.de/bbs/user/102268.xlsm

Anzeige
AW: Immer diese Userformen...
15.12.2015 17:09:00
Michael
Hallo Jan,
naja, ich hatte mir schon gedacht, daß das in der Praxis Probleme aufwerfen könnte.
Man muß halt am Anfang abfragen, ob die vorhergehenden Boxen gefüllt wurden:
Private Sub ComboBox2_Enter()
'Zweite Combobox in Abhängigkeit von Combobox1.
'Jeder Kunde wird einmalig angezeigt.
If Me.ComboBox6.Value = "" Then
MsgBox "Bitte erst Feld  ausfüllen."
Exit Sub
End If
Set mobjDic = CreateObject("Scripting.Dictionary")
C_mstrDatenblatt = ComboBox6.Text
mlngLast = Worksheets(C_mstrDatenblatt).Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets(C_mstrDatenblatt)
For mlngZ = 3 To mlngLast
mobjDic(.Cells(mlngZ, 1).Value) = 0
Next
End With
Me.ComboBox2.List = mobjDic.keys
Set mobjDic = Nothing
End Sub
Das andere Problem liegt nicht an der leeren Zelle, sondern daran, daß es eine Combobox ist, der bereits eine Werteliste zugeordnet ist: und DA ist keine "leere" Zelle drin.
Mit

ComboBox3.Value = "Hund"
kommt nämlich auch ein Fehler.
Im Prinzip ist Deine Logik gefragt: was soll passieren, wenn? Das Feld gar nicht übernehmen und den Anwender nochmal wählen lassen? Zuerst in der Werteliste schauen, was drin ist?
Es ist zwar ne üble Krücke, aber wenn Du hier immer
ComboBox3.Value = "Bitte Wählen"
zuweist, nachdem Du in der UF.activate die Listenwerte ergänzt hast um

.AddItem "Bitte wählen"
, dann ist der Fehler wenigstens weg, bis Dir was Besseres einfällt.
Schöne Grüße,
Michael

Anzeige
AW: Immer diese Userformen...
16.12.2015 08:43:10
Jan
Guten Morgen Michael,
der erste Teil klappt schon mal einwandfrei! :)
Der 2. Teil ist zwar ein Übergang aber wie du dir wahrscheinlich schon gedacht hast leider keine Lösung, da die ComboBox wirklich leer sein sollte. Sinn dahinter ist, wenn jemand "fremdes" eine Zeile läd, soll er anhand der ausgefüllte Boxen in der UserForm sehen, welche Zelle nicht und welche Zelle mit etwas gefüllt ist. Dann soll er die Möglichkeit haben die ComboBoxen leer zu lassen, oder auch zu füllen. Und zwar mit allen von mir per AddItem hinzugefügten Listenwerten.
Ich hatte gehofft es ganz simpel zu lösen mit:
.AddItem = ""

aber das hat leider nicht geklappt :D
Wenn du noch Anregungen hast, kannst du die gerne hier reinschreiben. Ich werde mich aber auch noch anderswo umschauen.
LG
Jan

Anzeige
AW: Immer diese Userformen...
16.12.2015 08:43:12
Jan
Guten Morgen Michael,
der erste Teil klappt schon mal einwandfrei! :)
Der 2. Teil ist zwar ein Übergang aber wie du dir wahrscheinlich schon gedacht hast leider keine Lösung, da die ComboBox wirklich leer sein sollte. Sinn dahinter ist, wenn jemand "fremdes" eine Zeile läd, soll er anhand der ausgefüllte Boxen in der UserForm sehen, welche Zelle nicht und welche Zelle mit etwas gefüllt ist. Dann soll er die Möglichkeit haben die ComboBoxen leer zu lassen, oder auch zu füllen. Und zwar mit allen von mir per AddItem hinzugefügten Listenwerten.
Ich hatte gehofft es ganz simpel zu lösen mit:
.AddItem = ""

aber das hat leider nicht geklappt :D
Wenn du noch Anregungen hast, kannst du die gerne hier reinschreiben. Ich werde mich aber auch noch anderswo umschauen.
LG
Jan

Anzeige
AW: Immer diese Userformen...
16.12.2015 08:43:17
Jan
Guten Morgen Michael,
der erste Teil klappt schon mal einwandfrei! :)
Der 2. Teil ist zwar ein Übergang aber wie du dir wahrscheinlich schon gedacht hast leider keine Lösung, da die ComboBox wirklich leer sein sollte. Sinn dahinter ist, wenn jemand "fremdes" eine Zeile läd, soll er anhand der ausgefüllte Boxen in der UserForm sehen, welche Zelle nicht und welche Zelle mit etwas gefüllt ist. Dann soll er die Möglichkeit haben die ComboBoxen leer zu lassen, oder auch zu füllen. Und zwar mit allen von mir per AddItem hinzugefügten Listenwerten.
Ich hatte gehofft es ganz simpel zu lösen mit:
.AddItem = ""

aber das hat leider nicht geklappt :D
Wenn du noch Anregungen hast, kannst du die gerne hier reinschreiben. Ich werde mich aber auch noch anderswo umschauen.
LG
Jan

Anzeige
AW: Immer diese Userformen...
16.12.2015 08:43:33
Jan
Guten Morgen Michael,
der erste Teil klappt schon mal einwandfrei! :)
Der 2. Teil ist zwar ein Übergang aber wie du dir wahrscheinlich schon gedacht hast leider keine Lösung, da die ComboBox wirklich leer sein sollte. Sinn dahinter ist, wenn jemand "fremdes" eine Zeile läd, soll er anhand der ausgefüllte Boxen in der UserForm sehen, welche Zelle nicht und welche Zelle mit etwas gefüllt ist. Dann soll er die Möglichkeit haben die ComboBoxen leer zu lassen, oder auch zu füllen. Und zwar mit allen von mir per AddItem hinzugefügten Listenwerten.
Ich hatte gehofft es ganz simpel zu lösen mit:
.AddItem = ""

aber das hat leider nicht geklappt :D
Wenn du noch Anregungen hast, kannst du die gerne hier reinschreiben. Ich werde mich aber auch noch anderswo umschauen.
LG
Jan

Anzeige
AW: Immer diese Userformen...
16.12.2015 08:43:45
Jan
Guten Morgen Michael,
der erste Teil klappt schon mal einwandfrei! :)
Der 2. Teil ist zwar ein Übergang aber wie du dir wahrscheinlich schon gedacht hast leider keine Lösung, da die ComboBox wirklich leer sein sollte. Sinn dahinter ist, wenn jemand "fremdes" eine Zeile läd, soll er anhand der ausgefüllte Boxen in der UserForm sehen, welche Zelle nicht und welche Zelle mit etwas gefüllt ist. Dann soll er die Möglichkeit haben die ComboBoxen leer zu lassen, oder auch zu füllen. Und zwar mit allen von mir per AddItem hinzugefügten Listenwerten.
Ich hatte gehofft es ganz simpel zu lösen mit:
.AddItem = ""

aber das hat leider nicht geklappt :D
Wenn du noch Anregungen hast, kannst du die gerne hier reinschreiben. Ich werde mich aber auch noch anderswo umschauen.
LG
Jan

Anzeige
AW: Immer diese Userformen...
16.12.2015 14:03:26
Michael
Hallo Jan,
die Zuweisung von ="" geht offensichtlich nicht, aber versuch mal das Konstrukt:
    If suche.Offset(0, 13) = "" Then
ComboBox3.Clear
Else
ComboBox3.Value = suche.Offset(0, 13)
End If

Allerdings wäre die saubere Lösung, vor der Zuweisung zu diesem Feld zu überprüfen, ob der in der Tabelle vorhandene Wert in den Items enthalten ist.
Schöne Grüße,
Michael

AW: Immer diese Userformen...
16.12.2015 14:58:26
Jan
Hallo Michael,
das Gute ist: es gibt keine Fehlermeldung und die ComboBox wird mit "nichts" gefüllt
Das Schlechte ist leider, dass die ComboBox keine Auswahl mehr anzeigt.
LG
Jan

Profi für UF gefragt ...
17.12.2015 15:42:48
Michael
Hallo Jan,
sorry, ich bin denn doch nicht so vertraut mit den Feinheiten der UFen.
Unglücklicherweise läuft die UF bei mir nicht stabil: ich habe gestern schon zweimal aus dem Forum nachgeladen, und heute geht sie wieder nicht. Das macht keinen Spaß.
Ich hoffe, mit dem Betreff klinkt sich vielleicht noch jemand ein.
Schöne Grüße,
Michael

AW: Immer diese Userformen...
16.12.2015 08:45:33
Jan
Sorry für das mehrfache Absenden, mein PC hat nicht mitgemacht...

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige