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

Prüfung eines Textfeldes + zurück in die Tabelle

Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 21:17:48
Uwe
Hallo zusammen,
ich stehe mal wieder vor einem kleinen Problem und hoffe auf Eure Hilfr.
In eine Tabelle werden die Zeilen ausschließlich über ein Userform eingefügt.
(Anlegen einer Zeile)
Später soll die Zeile wiederum über ein zweites Userform überarbeitet werden. Suchkriterium ist die Spalte B der Tabelle. In diesem Userform werden die Zellen der Zeile in Text, Label und Comboboxen dargestellt. (Die in den Labeln gezeigten Werte dürfen nicht mehr verändert werden)
Userform1 läuft alles bestens, zum Userform2 habe ich nun zwei Probleme.
1. Die Werte der Spalte C sind numerisch, 8stellig. Gebe ich nun in das zur Bestimmung vorgegebene Textfeld die korrekte Nummer, z.B. 12345678 ein, werden alle Werte in den richtigen Feldern korrekt angezeigt. Gebe ich z. B. 87654321 ein erscheint eine MSGBox "ungültige Nummer" Soweit so gut.
Gebe ich nun nur 123 oder 456 ein, wird mir ebenfalls der Datensatz mit der Nummer 12345678 angezeigt. Das jedoch darf nicht sein. Es muss eine 100prozentige Übereinstimmung vorliegen, sonst "nicht gefunden"
Hier der Code, wie ich ihn schon habe:
Private Sub Search_RMA_Click()
Dim S_RMA
Dim c As Range
S_RMA = tb_RMA.Text
Set c = Sheets("B&O Issue Log").Columns(2).Find(S_RMA)
If Not c Is Nothing Then
lbl_Created.Caption = c.Offset(0, -1).Text
cbo_Status.Text = c.Offset(0, 1).Text
lbl_Name.Caption = c.Offset(0, 2).Text
lbl_Country.Caption = c.Offset(0, 3).Text
lbl_Item.Caption = c.Offset(0, 4).Text
lbl_Product.Caption = c.Offset(0, 5).Text
lbl_Serial.Caption = c.Offset(0, 6).Text
cbo_Responsibility.Text = c.Offset(0, 7).Text
lbl_Reason.Caption = c.Offset(0, 8).Text
lbl_Description.Caption = c.Offset(0, 9).Text
tb_Solution.Text = c.Offset(0, 10).Text
tb_Comments.Text = c.Offset(0, 11).Text
Else: MsgBox "The RMA Number does not exist."
End If
End Sub
2. Die Textboxen und Comboboxen dürfen (Ausser dem Suchfeld) editiert werden. Diese Änderungen sollen dann auch mit einem Button "Rework" in die betreffende Zeile der Tabelle zurückgeschrieben werden.
Ich hänge gleich noch die Original Datei zur besseren Übersicht mit an.
https://www.herber.de/bbs/user/123602.xlsm
Vielen Dank vorab für die Hilfe,
Viele Grüße
Uwe

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

Betreff
Datum
Anwender
Anzeige
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 21:25:09
Uwe
Anmerkung:
Besser wäre noch ein kleines Hilfs-Userform in die nur der Suchwert eingetragen wird. Wurde dieser gefunden öffnet sich das beschriebene Userform zum editieren bereits mit den in der betreffenden Tabelle gefundnenen Werten. Vorteil: Ich kann die Nummer hier dann in einem Label darstellen so dass diese dann auch nicht mehr überschrieben werden kann.
Ich habe das schon in einem Userform2 versucht, aber die Übergabe an Userform3 nicht hinbekommen.
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 21:38:54
Matthias
Moin!
Kann hier in meinem System die Datei nicht öffnen. Kann deshalb zum ZWeiten Problem nichts sagen bzw. es nicht sehen. Kannst du da mal umschreiben, woran es happert!?
Bzgl. der 100 Prozentigen Übereinstimmung solltest du in der .find Methode noch die Art de Suche angeben - Teiltreffer oder Gesamt. Wenn du die WErte nicht angibst, werden sie vom vorherigen AUfruf übernommen. Siehe auch hier:
https://msdn.microsoft.com/de-de/vba/excel-vba/articles/range-find-method-excel
Bei dir sollte es dann mindestens so aussehen:
Set c = Sheets("B&O Issue Log").Columns(2).Find(S_RMA, LookAt:=xlWhole)
VG
Anzeige
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 21:56:59
Uwe
Hallo Matthias,
danke für deinen Beitrag. Die Lösung
Set c = Sheets("B&O Issue Log").Columns(2).Find(S_RMA, LookAt:=xlWhole)
habe ich dank Der Alte Dresdner schon hinbekommen.
Was den zweiten Teil betrifft, ich habe die Datei mal anders gespeichert, hoffe das klappt so.
https://www.herber.de/bbs/user/123603.zip
Vielen Dank und Gruß
Uwe
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 21:59:04
Uwe
Habe das Häckchen für noch offen vergessen :-)
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 22:14:26
Matthias
Gut, das kann ich öffnen. Schaue mir das jetzt mal an. Auf die schnelle schonmal. In der Sub hier
Search_RMA_Click()
stimmt die Zuordnung noch nicht ganz. Solution und Comments stehen in Spalte 12 und 13 und nicht in 10 und 11. Das müsstest du schonmal ändern. Melde mich dann nochmal.
Anzeige
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 22:40:52
Matthias
Moin!
Also der Beitrag eben kann vergessen werden. Hatte mich da vertan und den Offset nicht beachtet. Die Zuordnung hat natürlich gepasst. Zur Wiedergutmachung habe ich deinen Code mal angepasst. Es startet jetzt nicht die UF3 sondern die 2. Dort kannst du deine Zahl eingeben. Wird sie gefunden, so werden die Daten gleich in die UF3 eingetragen. Die Zeile wird im Tag von der RMA gespeichert. Dein Remark geht jetzt auch. FÜr die Zeile wird der Tag (deshalb gespeichert) genommen. Da braucht man nicht nochmal suchen. Falls du sowas wie eine neue Suche etc. einbaust und die Felder leerst, dan nauch den Tag wegmachen.
Hier mal die Datei:
https://www.herber.de/bbs/user/123606.zip
VG
Anzeige
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 23:51:34
Uwe
Hallo Matthias,
das ist von der Funktionalität genau so wie ich mir das vorgestellt habe. Hatte leider noch keine Zeit mit den Code anzusehen welcher mich natürlich brennend interessiert, vor allem ob mein gescheiterter Lösungsansatz wenigstens in die richtige Richtung ging. Ich hoffe nun dass ich den Rest so auch noch hinbekomme. Mache mir hier und da noch Gedanken.
Dubletten sind ein Thema, so möchte ich gerne bei der Userform1 nicht nur eine Fehlermeldung wenn das Format der RMA nicht passt, sondern auch eine Prüfung, ob diese schon vorhanden ist da dieser Wert sozusagen der Schlüssel, also nur einmalig zu vergeben ist. Darüber und einiges andere mache ich mir dann noch Gedanken und werde sicherlich gerne wenn ich nicht weiterkomme auf diese hilfsbereite Community zurückkommen.
Nochmals vielen Dank!
VG
Uwe
Anzeige
AW: Prüfung eines Textfeldes + zurück in die Tabelle
28.08.2018 10:27:37
Matthias
Moin!
Nutze dafür doch einfach die Suche, wie bei der Anzeige. Wenn du eine Zeile findest, weißt du dass die RMA doppelt ist. Da du den selben Code dann an mindestens 2 Stellen hast, würde ich es als Function anlegen. Parameter die RMA und Rückgabewert dann die Zeile bzw. bei keinem Treffer 0.
VG
Prüfung eines Textfeldes + zurück in die Tabelle
28.08.2018 13:40:39
Ober
Hallo Matthias,
danke auch für diesen Tipp den ich so auch umsetzen werde. Allerdings habe ich vorher noch ein Problem:
In beiden Userform (UF1 und UF3)soll es jeweils nicht möglich sein in der Combobox Status "Close" auszuwählen wenn das Label / Textfeld "Solution" leer ist.
Habe folgenden Code der keinen Fehler wiedergibt, aber auch die Anweisung ignoriert.:
Private Sub Status_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.Status
If Me.Status.Text = "Closed" And Me.Solution.Caption = "" Then
MsgBox "You can´t close a Issue without Solution)"
End If
End With
End Sub
Im UF1 ist Solution ein Label, im UF2 ein Textfeld.
Vielen Dank vorab
VG
Uwe
Anzeige
Prüfung eines Textfeldes + zurück in die Tabelle
28.08.2018 14:23:33
Uwe
Nochmal Hallo,
gebe mir ausnahmsweise die Antwort selber. Hatte viel zu viel drum rum. So funktionierts:
Private Sub Status_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Status.Value = "Close" And Solution.Caption = "" Then MsgBox "You can´t close a Issue  _
without Solution"
End Sub
Gruß
Uwe
AW: Prüfung eines Textfeldes + zurück in die Tabelle
28.08.2018 14:37:23
Matthias
Noch eine Ergänzung. In der UF2 prüfe mal noch, ob ein Wert eingegeben wurde. Ansonsten kommst du auch von UF2 nach Uf3, was aber falsch wäre.
AW: Prüfung eines Textfeldes + zurück in die Tabelle
28.08.2018 14:32:44
Matthias
Moin!
Also da in UF1 Solution eh ein Label ist und nicht beschrieben werden kann, ist doch eigentlich die Auswahl des Status auch nicht notwendig. Das Label ist immer leer und somit kann dort nur beim Status "Open" eingetragen werden. Wenn es eh nicht geändert werden kann, musst du dort dem User auch keine Auswahl ermöglichen. Würde das dort auch als Label mit dem Wert Open festlegen.
Zum Code. Sollte wohl in UF 1. Der gibt deshalb nichts aus, da du nur die Werte "Open" und "Close" in der CB hast. "Closed" hingegen ist dort nicht dabei. Die Prüfung darauf ist immer falsch. Zudem war in der letzten Datei auch kein Label Solution dabei. Da hätte er eigentlich einen Fehler auswerfen müssen - hieß bei mir nur Label 16.
Zur UF3. Dort würde ich die CB drin lassen und den Code dazu:
Private Sub cbo_Status_Change()
If Me.cbo_Status.Text = "Close" And Me.tb_Solution.Text = "" Then
MsgBox "You can´t close a Issue without Solution!"
Me.cbo_Status.Text = "Open"
End If
End Sub

VG
Anzeige
Prüfung eines Textfeldes + zurück in die Tabelle
28.08.2018 15:06:36
Uwe
Moin und danke für den Hinweis.
Dennoch belasse ich die Prüfung auch im ersten UF.
Denn: Eigentlich sollte es nur eine Liste werden. Übersichtlich war die Vorgabe.
Hatte in den Zeilen solche Gimmicks wie beispielsweise dass sich die Artikel Bezeichnung über die Artikelnummer aus einer Hilfstabelle zieht. die Comboboxen hatte ich in den Spalten usw. Ergebnis: Obwohl nur 3 Leute mit der Liste arbeiten war nach zwei Wochen und ca. 800 Einträgen nur noch Chaos.
Wilde Formatierungen, uneinheitliche Einträge nach denen man unmöglich filtern kann, zerschossene Formeln usw. Deshalb habe ich mich für die formularbasierte Version entschieden. Tabelle komplett schreibgeschützt, Schutz wird nur temporär für den Makrozugriff freigegeben. Ich versuche nun alle möglichen Eingabefehler im Vorfeld auszuschalten. Sicherlich werde ich aber auch noch einen Pflegebutton brauchen um
1. fehlerhafte Zeilen zu löschen und
2. Zeilen einmal im Quartal auf einem zweiten Tabellenblatt zu archivieren.
Nur zum Verständnis wenn Du dich fragst wofür der SchnickSchnack.
Leider muss das Ding nun Fertig werden und am Platz ist es immer schwierig bei der Sache zu bleiben, habe schließlich noch mein Tagesgeschäft. Und zu Hause? Irgendwann ist dann doch genug.
Soweit nochmal danke und Gruß
Uwe
Anzeige
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 21:27:27
AlterDresdner
Hallo Uwe,
wenn Du die Find-Zeile wie folgt änderst
Set c = Sheets("B&O Issue Log").Columns(2).Find(What:=S_RMA,LookAt:=xlWhole)
wird durch xlWhole eine Übereimnstimmung mit dem ganzen Zellinhalt gesucht.
Standard für LookAt ist xlPart, also reicht auch teilweise Übereinstimmung.
Gruß der ALteDresdner
AW: Prüfung eines Textfeldes + zurück in die Tabelle
27.08.2018 21:34:34
Uwe
Hallo AlterDresdner,
vielen Dank für schnelle Hilfe für diesen Teil der Frage. Gleich ergänzt und klappt!!!
Wäre natürlich auch Klasse den Rest zu lösen. Ich erwarte natürlich keine komplettlösung auf der ich mich ausruhen kann, aber ein paar Hinweise wären Klasse.
VG
Uwe
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige