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

Pflichteingabe, sonst Fehler

Pflichteingabe, sonst Fehler
11.01.2023 19:13:16
22Grad
Guten Abend,
ich würde gerne umsetzen, dass bei der Eingabe eines neuen Datensatzes über eine UserForm Pflichtfelder gefüllt sein müssen, damit gespeichert werden kann.
Das ganze überschreitet deswegen meinen Horizont, da es sich bei dem Pflichtfeld nicht nur um eine TextBox, sondern auch um eine Spalte in der Tabelle selbst handeln soll.
Das ganze hat die Logik, dass die Spalte eine Formel beinhaltet, die die Summe von verschiedenen TextBoxen bildet. Was es für mich so knifflig macht ist, dass die Summe aus 4 TextBoxen gebildet werden. Es gibt aber jede Kombination von Eingabe wodurch ich nicht die TextBoxen selbst als Pflichtfeld hernehmen kann, da auch mal in drei TextBoxen nichts stehen kann.
Handeln tut es sich bei der direkt ansprechbaren TextBox um TextBox1. Diese habe ich auch schon wie folgt angesprochen:
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Fehlender Wert", vbCritical + vbOKOnly, "FEHLER!"
was soweit funktioniert.
Was jetzt eben fehlt ist der Zusatz, dass in Spalte Q in der entsprechenden Zelle ein Wert stehen muss, der sich eben aus der Summe von TextBox3,4,5 und 6 bildet (in unterschiedlichen Kombinationen)....
Gibt es dafür eine Lösung?
Danke!

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pflichteingabe, sonst Fehler
11.01.2023 19:17:56
ralf_b
dass die Spalte eine Formel beinhaltet, die die Summe von verschiedenen TextBoxen bildet.
erklär mal wie das geht.
AW: Pflichteingabe, sonst Fehler
11.01.2023 19:32:13
Tobi
Hab das eigentlich recht simpel gemacht (anders kann ichs auch nicht :D)
Und zwar schreibt TextBox3 in Spalte S, TB4 in T usw. In spalte Q ist die Formel "Summe(S:V) und ein Schreibschutz drüber, damit sie mir nicht überschrieben werden kann.
Und es soll eben ein Wert in Q stehen.
AW: Pflichteingabe, sonst Fehler
11.01.2023 20:18:38
ralf_b
eine Pflichtfeldprüfung würde ich direkt vor dem gesammelten Eintragen von Werten in dem Datensatz machen. Also nicht einzelne Werte eintragen und irgendwann mal prüfen ob was angekommen ist, sondern direkt nach dem Klick auf dem Datensatzspeichern Button. Man kann auch im vba die Werte der Textboxen in Zahlen umwandeln und sie in einer Variable summieren. Diese dann prüfen.
Anzeige
AW: Pflichteingabe, sonst Fehler
11.01.2023 21:03:55
22Grad
Hm, hast du da eventuell ein konkretes Beispiel? Kann mir da leider grad nix drunter vorstellen :/
Weil bis jetzt ist es so, dass die Werte (egal welche oder eben welche auch nicht) in der UserForm eingetragen werden könne. Erst beim Speichern wird dann der Fehler ausgegeben, dass z.B. ein Wert in TB1 fehlt. So würdest du es auch machen, hab ich das richtig verstanden?
Was aber mach ich bin der Spalte die die Summe bildet, in der aber ein Wert stehen soll. Weil wenn ich (besser weiß ich es leider nicht) über die UserForm bestimme, das ein Wert in TB3,4,5 und 6 stehen muss, können einige Fälle nicht eingetragen werden.
Anzeige
AW: Pflichteingabe, sonst Fehler
11.01.2023 22:07:56
ralf_b
ja so meinte ich es.
in die Summenspalte kannst du auch den errechneten Wert direkt eintragen oder eben eine Formel.
Sind die Werte später in der Zeile drin rechnet die Formel es auch aus.
Ich weis nicht was du meinst wen du schreibst, das einige Fälle nicht eingetragen werden können.
Die Logik für die Prüfung deiner Eingaben muß schon zu den Erfordernissen deiner Anwendung passen.
AW: Pflichteingabe, sonst Fehler
12.01.2023 05:28:25
Tobi
Ich weiß leider nicht genau was du mit "den errechneten Wert direkt eintragen" meinst. Das derjenige der die UserForm befüllt selbst die Summe ausrechnet?
Also bis jetzt nehme ich eben diese Funktion her:
Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens ein Konto eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
.
.
.
Ist es hier denn überhaupt grundsätzlich möglich eine Zelle mit einzupflegen? Also das er überprüft, ob in Zelle (als Beispiel) Q21 eben die Summe gebildet wurde und das bedeutet dann gleich, dass ein Wert in die TB3,4,5 und oder 6 eingetragen wurde.
Was ich meine mit "das einige Fälle nicht eingetragen werden können" ist. Dass die TB jeweils eine Person betrifft. Und eben nicht immer sind alle Personen involviert und haben somit nicht immer einen Wert (Zahl, bzw. Geldbetrag) einzutragen. Warum ich das schreibe ist, weil mein erster Gedanke (besser wüsste ich es nicht, weswegen ich da Hilfe bräuchte) war, dass ich auch hier als Prämisse setze, das TB3,4,5 UND 6 einen Wert haben müssen um speichern zu können.
Das ganze scheitert aber eben daran, dass dann einige Fälle nicht betrachtet werden können, da eventuell Person3 (TB3) nicht dabei war und somit keinen Wert hat. Dies würde aber mit der Prämisse zu einem Fehler kommen und es kann nicht gespeichert werden.
Anzeige
AW: Pflichteingabe, sonst Fehler
12.01.2023 07:47:24
ralf_b
vba ist nur so intelligent wie du es ihm beibringst. Entweder sind die Textboxen Pflichtfelder oder nicht. So wie du es beschreibst, sind sie es nicht. Nur eins von denen ist jeweils ein Pflichfeld, oder? Also wäre eine Prüfung ob die Summe aus allen Textboxen größer 0 ist, eine Idee. Sind die Geldbeträge auch mal negativ müßte die Prüfung aber anders lauten. z.b die Textboxinhalte aneinander ketten( ist ja nur text) und deren Gesamtlänge prüfen.

 if Len( textbox3 & textbox4 & textbo ..usw...) >0 then 
und ja du kannst auch prüfen ob ein Wert in einer Zelle steht. Wenn du sie zu dem Zeitpunkt( Zeile des Datensatzes, sofern schon vorhanden) kennst. Das widerspricht aber dem Ablauf von erst die Daten prüfen, dann eintragen.
Anzeige
AW: Pflichteingabe, sonst Fehler
14.01.2023 20:22:54
Tobi
Entschuldigung dass ich mich erst so spät wieder melde...
Also entweder ich bin viel zu naiv dran gegangen, oder ich muss noch zusätzlich etwas anpassen...
Könnest du mir eventuell sagen ob es so schon funktionieren müsste:

Private Sub CommandButton3_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
If Len(TextBox3 & TextBox4 & TextBox5 & TextBox6) > 0 Then
MsgBox "Sie müssen mindestens ein Konto eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
End If
Entschuldigung für die ganzen "noob Fragen" :D
Grüße
Anzeige
AW: Pflichteingabe, sonst Fehler
14.01.2023 22:43:26
ralf_b
die Frage ob es funktionieren könnte, solltest du dir selbst beantworten. Und zwar indem du verschiedene Möglichkeiten testest. Aktuell zeigst du eine Variante, die nur die Textboxen 3-6 prüft wenn Textbox1 leer ist.
Seine Software mit Grenzwerten und verschiedenen Kombinationen der Eingaben zu testen und evtl. Logik-Lücken zu finden, gehört einfach dazu. Du mußt davon ausgehen das alle Anderen dein Programm kaputt machen wollen. Und das gilt es zu verhindern.
AW: Pflichteingabe, sonst Fehler
15.01.2023 19:11:27
Tobi
Da muss ich noch mal kurz fragen " Aktuell zeigst du eine Variante, die nur die Textboxen 3-6 prüft wenn Textbox1 leer ist.".
Heißt das, dass wenn etwas in TB1 steht, dass die TB3-6 NICHT geprüft werden? Weil genau dass sollte nicht der Fall sein :/.
Es sollte viel mehr so sein, dass TB3-6 unabhängig von TB1 auch geprüft werden.
Also quasi "steht etwas in TB1?" UND "steht etwas in TB3, 4, 5, ODER 6".
Dabei sollte es zwei HAUPT Fälle geben:
1. TB1 "ja" und TB3-6 "ja" = kein Fehler (wobei es hier egal ist, in welcher TB von 3-6 etwas steht, auch wenn es nur eine ist)
2. TB1 "nein" und TB3-6 "nein ODER TB1 "ja" TB3-6 nein" ODER TB1"nein" TB3-6"Ja" = Fehler.
Oh man, gestaltet sich echt kompliziert zum erklären.. hoffe man versteht auf was ich hinaus will :/
Anzeige
AW: Pflichteingabe, sonst Fehler
15.01.2023 21:00:26
ralf_b
einmal erkläre ich es noch, dann mußt du langsam anfangen auf den Code zu sehen und dessen Wirkweise zu verstehen.
lerne die Basics, sonst wird das nüscht.

If Trim(CStr(TextBox1.Text)) = "" Then ' Wenn Textbox1  leer  , dann  führe den Code in diesem IF-Endif Block aus
If Len(TextBox3 & TextBox4 & TextBox5 & TextBox6) > 0 Then 'wenn eine der anderen nicht leer, dann Messagebox aufrufen
MsgBox  ....
End If
End If

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige