Ich möchte in eine Excel-Tabelle Pflichtfelder erstellen, sobald in einer Zelle ein Wert eingetragen ist?

2 Antworten

Musst du das in Excel machen? MS Access wäre besser für so etwas geeignet.


Python1860 
Beitragsersteller
 19.04.2016, 07:50

Hallo Helfenderuser,

Vielen Dank für den Hinweis.

Pflichtfelder definieren würde sicher mit Access besser funktionieren. Ich möchte aber das Excel gerne als Template per Mail verschicken, die Anwender sollen es dann ausfüllen und wieder zurück schicken.

Vielen Dank nochmals!

Viele Grüße Python1860

0

Prüfe im Ereignishandler Workbook_BeforeSafe auf die Bedingungen und setze ggf. den Parameter Cancel auf True.

Da die Zellen sich aber in einer Arbeitsmappe befinden, würde ich es für guten Stil halten, die Prüfung auch hier vorzunehmen, aber hier stelle ich eine einfache Lösung vor.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim zeile As Long, OK As Boolean
OK = True
For zeile = 1 To Tabelle1.Cells.SpecialCells(xlCellTypeLastCell).Row
If Tabelle1.Cells(zeile, 1).Value <> "" Then
If Tabelle1.Cells(zeile, 3).Value = "" Then OK = False 'Spalte C
If Tabelle1.Cells(zeile, 5).Value = "" Then OK = False 'Spalte E
If Tabelle1.Cells(zeile, 6).Value = "" Then OK = False 'Spalte F
If Tabelle1.Cells(zeile, 8).Value = "" Then OK = False 'Spalte H
End If
Next
If Not OK Then
MsgBox "Speichern nicht möglich - nicht alle Pflichtfelder ausgefüllt"
Cancel = True
End If
End Sub

Möglicherweise musst du noch ein  Trim um die Tabelle1.Cells(...).Value wickeln, damit eine Reihe von Leerzeilen als leer gilt.

Man könnte noch anzeigen lassen, welche Pflichtzellen nicht ausgefüllt sind und die erste dieser Zellen auswählen und noch viele andere Verfeinerungen.

Denk dran, dass der Benutzer das Ausführen von Makros unterbinden kann.


Python1860 
Beitragsersteller
 19.04.2016, 07:44

Hallo PWolff,

besten Dank, für die Super schnelle Hilfe funktioniert bestens.

Du hast noch geschrieben, dass man nicht ausgefüllte Pflichtfelder markieren und gleich die erste Zelle Auswählen kann.

Könntest du mir das evtl. bitte auch kurz schreiben wie man das macht?

Vielen Dank im Voraus!

Viele Grüße Python1860

0
PWolff  19.04.2016, 14:31
@Python1860
Dim ersteZuFüllendeZelle As Range 'einen Typ für einzelne Zellen gibt's leider nicht; wir müssen Range nehmen
Set ersteZuFüllendeZelle = Nothing

For [alle Pflichtfeldprüfungen] - Code wie vorher
'in zeile und spalte stehen die Koordinaten der gerade geprüften Zelle
If PflichtfeldFehlt Then
If ersteZuFüllendeZelle Is Nothing Then Set ersteZuFüllendeZelle = Tabelle1.Cells(zeile, spalte) 'Wenn wir noch keine falsch gefüllte Zelle gefunden haben, merken wir uns die aktuell geprüfte Zelle

[Meldungen usw. zusammenstellen wie vorher]
Tabelle1.Cells(zeile, spalte).Interior.ColorIndex = 38 'Hintergrundfarbe hellrosa als Markierung für fehlende / falsche Füllung (kann natürlich angepasst werden)
Else
Tabelle1.Cells(zeile, spalte).Interior.ColorIndex = xlNone 'Standardhintergrundfarbe
End If
Next

If Not (ersteZuFüllendeZelle Is Nothing) Then ersteZuFüllendeZelle.Select
0