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

wenn alle Felder beschrieben, Datei schließen

wenn alle Felder beschrieben, Datei schließen
04.11.2019 11:30:49
schlu
Hallo zusammen,
Es handelt sich um ein excel Blatt , wo ich einen Bereich festgelegt habe, der auf leere Felder überprüft werden soll mit einem command Button . Sind leere Felder vorhanden, kommt die Messagebox und bei Bestätigen der Box kommt man zurück auf das Excel. So soll es auch sein.
Sind keine leeren Felder in der Range vorhanden, soll sich die Datei eigentlich speichern und schließen beim Betätigen des Command buttons. Leider bleibt die Datei aber offen.
Mein unten angebender Code funktioniert super - bis auf, dass - wenn keine Felder leer sind- die Datei nicht gespeichert und geschlossen wird.
Habe schon mit "else" und "Exit sub" usw ausprobiert, aber die Datei bleibt immer offen, auch wenn alle Felder ausgefüllt sind...
Kann mir jemand meinen Fehler zeigen ?
Vielen lieben Dank!!!
Private Sub CommandButton22_Click()
Dim sFileName       As String
Dim myRange As Range, cel As Range
Set myRange = Tabelle1.Range("A1:BX26")
Dim Leer As String
For Each cel In myRange
If cel.Address = cel.MergeArea(1).Address And cel.Value = "" Then _
Leer = Leer & cel.Address & ", "
Next
If Len(Leer) = 0 Then Exit Sub
Leer = Left(Leer, Len(Leer) - 2)
MsgBox "Die Zellen " & Leer & " müssen noch ausgefüllt werden."
Exit Sub
'Dateiname aus Zelle A8 holen
sFileName = Format(Date, "yyyy/mm/dd_") & "Verpackung Produktionslinie_" & "Linie " &  _
ComboBox21.Value
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\12_Test VBA Speicherort\X" & sFileName & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Application.Quit
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: wenn alle Felder beschrieben, Datei schließen
04.11.2019 12:51:43
fcs
Hallo Schlu,
mit den Exit Sub - Anweisungen bringst du deine gewünschte Logik zu Fall.
So sollte es funktionieren:
Private Sub CommandButton22_Click()
Dim sFileName       As String
Dim myRange As Range, cel As Range
Set myRange = Tabelle1.Range("A1:BX26")
Dim Leer As String
For Each cel In myRange
If cel.Address = cel.MergeArea(1).Address And cel.Value = "" Then _
Leer = Leer & cel.Address & ", "
Next
If Len(Leer) = 0 Then 'alle Zellen sind ausgefüllt
'Dateiname aus Combobox holen
sFileName = Format(Date, "yyyy/mm/dd_") & "Verpackung Produktionslinie_" & "Linie " & _
ComboBox21.Value
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\12_Test VBA Speicherort\X" & sFileName & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Application.DisplayAlerts = True
ActiveWorkbook.Close savechanges:=True 'Datei shliessen und ggf. speichern
Application.Quit 'Excel beenden ?
Else
Leer = Left(Leer, Len(Leer) - 2)
MsgBox "Die Zellen " & Leer & " müssen noch ausgefüllt werden."
End If
End Sub
LG
Franz
Anzeige
AW: wenn alle Felder beschrieben, Datei schließen
04.11.2019 14:31:30
schlu
Super! das klappt!
vielen Dank Franz!
Kannst du mir noch einen Tip geben, wie man evtl neben den "normalen" Zellen auch noch die ganzen 14 Comboboxen auf Inhalt überprüft, die auch in der DAtei sind? die müssten dann auch in der messagebox ausgegeben werden.
Aber sehr sehr vielen Dank für den obigen Tipp!!
viele Grüße
Schlu
AW: wenn alle Felder beschrieben, Datei schließen
04.11.2019 15:33:17
fcs
Hallo Schlu,
wenn die Comboboxen auf dem gleichen Blatt sind wie Comboboxen, dann mit den nachfolgenden Ergänzungen.
LG
Franz
Private Sub CommandButton22_Click()
Dim sFileName       As String
Dim myRange As Range, cel As Range
Set myRange = Tabelle1.Range("A1:BX26")
Dim objSh As Shape
Dim Leer As String, LeerCombo As String, msgText As String
'Überprüfen der Comboxen
For Each objSh In Tabelle1.Shapes
With objSh
If .Type = msoOLEControlObject Then
'Überprüfen der Active-X Comboboxen
If InStr(LCase(.OLEFormat.progID), "combobox") > 0 Then
If objSh.OLEFormat.Object.Object.ListIndex = -1 Then
If LeerCombo = "" Then
LeerCombo = objSh.Name
Else
LeerCombo = LeerCombo & ", " & objSh.Name
End If
End If
End If
ElseIf .Type = msoFormControl Then
'Überprüfen der FormControl-Comboboxen (DropDowns)
If .FormControlType = xlDropDown Then
If objSh.ControlFormat.ListIndex = 0 Then
If LeerCombo = "" Then
LeerCombo = objSh.Name
Else
LeerCombo = LeerCombo & ", " & objSh.Name
End If
End If
End If
End If
End With
Next
For Each cel In myRange
If cel.Address = cel.MergeArea(1).Address And cel.Value = "" Then _
Leer = Leer & cel.Address & ", "
Next
If Len(Leer & LeerCombo) = 0 Then 'alle Zellen sind ausgefüllt
'Dateiname aus Combobox holen
sFileName = Format(Date, "yyyy/mm/dd_") & "Verpackung Produktionslinie_" & "Linie " & _
ComboBox21.Value
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\12_Test VBA Speicherort\X" & sFileName & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Application.DisplayAlerts = True
ActiveWorkbook.Close savechanges:=True 'Datei shliessen und ggf. speichern
Application.Quit 'Excel beenden ?
Else
If Leer  "" Then
Leer = Left(Leer, Len(Leer) - 2)
msgText = "Die Zellen " & Leer
End If
If LeerCombo  "" Then
msgText = msgText & IIf(Leer  "", vbLf & "und die", "Die") & " Comboboxen " &  _
LeerCombo
End If
msgText = msgText & vbLf & "müssen noch ausgefüllt werden."
MsgBox msgText
End If
End Sub

Anzeige
AW: wenn alle Felder beschrieben, Datei schließen
04.11.2019 16:08:42
schlu
Wahnsinn, funktoniert perfekt! Vielen vielen Dank!
Viele Grüße
Schlu
AW: wenn alle Felder beschrieben, Datei schließen
05.11.2019 11:08:14
schlu
Hallo nochmal,
eine kleine Änderung würde ich gerne noch einbauen: kann man es so programmieren, dass mir zusätzlich zu der Messagebox auch die leeren Zellen farbig hinterlegt oder umrandet werden?
Ich habe schon mal einen Code gehabt, wo die leeren Zellen farbig werden, aber bei meinem Code macht der alle anderen Zellen auch farblos, dabei sollen eigtl nur die leeren Zellen farbig werden.
Sobald ein Mitarbeiter die Zelle dann beschreibt und auf den Prüfbutton klickt, soll dann natürlich die Farbe wieder weggehen...
Das war mein Code zum Einfärben, der leider alle anderen Zellen farblos macht, was ich nicht will:
Private Sub CommandButton21_Click()
Dim myRange As Range, cel As Range
Set myRange = Tabelle1.Range("A1:BX26")
myRange.Interior.ColorIndex = xlNone
For Each cel In myRange
If Trim(cel.Value) = "" Then cel.Interior.ColorIndex = 3
Next cel
End Sub

Vielen Dank für die Hilfe.
Lg schlu
Anzeige
AW: wenn alle Felder beschrieben, Datei schließen
05.11.2019 15:52:40
fcs
Hallo Schlu,
da du verbundene Zellen verwendest wird nicht nur die jeweils 1. Zelle sonden der komplette Block der verbunden Zellen markiert.
Wenn sich die Farben der Zellen automatisch ändern sollen, dann währe eine bedingte Formatierung eine Alternative, ggf. bei der Prüfung der Eingabenen den Wert einer zusätzlich Zelle ändern, die Teil der bedingten Formatierung ist. Dann werden leere Eingabe-Zellen erst farbig wenn die Prüfung der Eingabe erfolgt.
LG
Franz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige