Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
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
Formular - Prüfung ob Felder leer
07.05.2017 19:51:24
Felix
Moin,
da ich bei meinem ersten Beitrag nicht alle Informationen beigefügt hatte, hier noch mal alles zusammen und hoffe, dass mir einer von Euch helfen kann:
In meiner Testtabelle wird per Button die Prüfung gestartet, ob die Felder A1, A3 und A5 Werte enthalten. Sind alle Werte vorhanden erscheint nur eine Msgbox, wenn nicht soll Userform1 aufgerufen werden, das den User zum eingeben der fehlenden Daten zwingt.
Problem:
1. Irgendwo hakt es generell und ich habe Anfängerfehler drin. U.a. bekomme ich die Fehlermeldung "nicht genügend Speicher!".
2. Combobox2 soll im Formular das Datum zeigen und nicht den numerischen Wert. Ich hatte es versucht mit cdate, aber nicht erfolgreich.
Hier die Testdatei:
https://www.herber.de/bbs/user/113389.xlsm
Lg Felix

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formular - Prüfung ob Felder leer
07.05.2017 20:44:09
Werner
Hallo Felix,
prüfen ob alle Zellen belegt sind z.B. so:
Public Sub Test()
With Worksheets("Tabelle1") 'ggf. anpassen
If WorksheetFunction.CountA(.Range("A1"), .Range("A3"), .Range("A5")) 
Mehr kann ich im Moment nicht sagen. Kann mir derzeit deine Datei nicht herunterladen und ansehen. Werde ich morgen mal machen.
Gruß Werner
AW: Formular - Prüfung ob Felder leer
07.05.2017 20:52:02
Sepp
Hallo Felix,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub Inputcheck04()
If Application.CountA(Range("A1,A3,A5")) < 3 Then
  UserForm1.Show
Else
  MsgBox "Alle Werte vorhanden!"
End If
End Sub

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub UserForm_Initialize()
Dim rng As Range

'Combobox01 content
ComboBox1.RowSource = "C1:C5"
'Combobox02 content
With ComboBox2
  For Each rng In Range("G1:G5")
    .AddItem rng.Text
  Next
End With
'Fill fields in form
ComboBox1 = Cells(1, 1).Text
ComboBox2 = Cells(3, 1).Text
TextBox1 = Cells(5, 1).Text
'set start field in form
ComboBox1.SetFocus
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub OKCommandButton_Click()
'Transfer Values to Worksheet
Cells(1, 1).Value = ComboBox1.Value
Cells(3, 1).Value = CDate(ComboBox2.Value)
Cells(5, 1).Value = TextBox1
'Close Form
Unload Me
'check again if fields are filled
Call Inputcheck04
End Sub

Gruß Sepp

Anzeige
AW: Formular - Prüfung ob Felder leer
07.05.2017 20:57:31
Gerd
Hallo Felix!
Private Sub ComboBox2_Change()
ComboBox2.Value = Format(ComboBox2.Value, "dd.mm.yyyy")
End Sub

Private Sub UserForm_Initialize()
'Combobox01 content
ComboBox1.RowSource = "C1:C5"
ComboBox1.Style = 2
'Combobox02 content
ComboBox2.RowSource = "G1:G5"
ComboBox2.Style = 2
'Fill fields in form
If Cells(1, 1)  "" Then ComboBox1.ListIndex = Application.Match(Cells(1, 1).Text, Range(" _
C1:C5"), 0) - 1
If Cells(3, 1)  "" Then ComboBox2.ListIndex = Application.Match(CLng(CDate(Cells(3, 1). _
Text)), Range("G1:G5"), 0) - 1
If IsDate(Cells(5, 1).Text) Then TextBox1 = Cells(5, 1).Text
'set start field in form
ComboBox1.SetFocus
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub OKCommandButton_Click()
Dim ValueA1 As String
Dim ValueA3 As String
Dim ValueA5 As String
ValueA1 = Range("A1")
ValueA3 = Range("A3")
ValueA5 = Range("A5")
'Transfer Values to Worksheet
Cells(1, 1).Value = ComboBox1.Value
Cells(3, 1).Value = ComboBox2.Value
If Len(TextBox1) > 0 Then Cells(5, 1).Value = TextBox1
'Close Form
Unload Me
'check again if fields are filled
Call Inputcheck04
End Sub

Sub Inputcheck04()
Dim raField As Range
For Each raField In Range("A1, A3, A5")
If IsEmpty(raField) = True Then UserForm1.Show
Next raField
MsgBox "Alle Werte vorhanden!"
End Sub
Gruß Gerd
Anzeige
AW: Formular - Prüfung ob Felder leer
08.05.2017 19:32:42
Felix
Moin,
vielen dank für Eure Antworten, sie haben mir sehr geholfen.
Für mich zum dazu lernen:
1. Spricht irgendetwas gegen die Prüfung durch
For Each raField In Range("A1, A3, A5")
If IsEmpty(raField) = True Then UserForm1.Show
Next raField
oder ist Prüfung über Anzahl gefüllter Felder nur eine andere Variante?
2. Gibt die Zeile
~f~TextBox1 = Cells(5, 1).Text
etwas in die Tabelle zurück auch wenn nichts in der Zelle eingetragen wird?
Nach dem Aufrufen des Formulars meldet Prüfung kein leeres Feld mehr.
Gerd, Deine Prüfung funktioniert und verhindert genau dies, besten Dank!
~f~If Len(TextBox1) > 0 Then Cells(5, 1).Value = TextBox1
3. Gerd,
warum füülst Du die Felder mit
If Cells(3, 1) "" Then ComboBox2.ListIndex = Application.Match(CLng(CDate(Cells(3, 1).Text)), Range("G1:G5"), 0) - 1
im Gegensatz zu
Cells(3, 1).Value = ComboBox2.Value
Lg Felix
Anzeige
AW: Formular - Prüfung ob Felder leer
09.05.2017 12:20:14
Gerd
Hallo Felix,
zu 3.) Diese Codezeile prüft in welcher Zeile des Quellbereichs der Wert aus A3 steht u. stellt den Listindex der Combobox(_Liste) bzw. deren Anzeigewert dementsprechend ein.
Die Combobox2 ist bereits vorher per "RowSource" gefüllt worden.
Sepp hat dir mit der AddItem-Methode eine Alternative zur RowSoure-Methode gezeigt.
zu 2.) Irgendwann wurde beim Hin- oder Herschieben aus dem Text "nichts" eine Leerstring "" u.
IsEmpty(...) lieferte dann FALSE.
zu 1.) Ja, prinzipiell sollte man Schleifen über Zellen aus Gründen der Laufzeit möglichst vermeiden.
In einer Schleife über drei Zellen sah ich jetzt kein Beinbruch.
Gruß Gerd
Anzeige
AW: Formular - Prüfung ob Felder leer
09.05.2017 21:36:21
Felix
Danke Gerd für die Erklärung!
Schönen Abend noch,
Felix

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige