PDA

Vollständige Version anzeigen : Pflichtfelder


timmy84
14.09.2011, 19:11
Hallo,

ich möchte ein Formular erstellen, ein paar Felder sind als Pflichtfelder vorgesehen... jetzt möchte ich es so machen, wenn die leer bleiben, eine Fehlermeldung bzw. kann man es nicht abspeichern!

kann mir vl jemand helfen, ein bsp würde auch sehr helfen...

lg,

only Coding
14.09.2011, 19:40
Hallo, timmy84,

benutzer- oder programmierfreundlich? ;)

Normalerweise kann bei der Reihenfolge der Textboxen beim Verlassden eingestellt werden, dass bei einer Textlänge von 0 das Feld wieder aktiviert wird. Dann ist der Benutzer gezwungen, die Felder in der Reihenfolge auszufüllen (wenn das gewünscht wird).

Durch eine Schaltfläche können zum Abschluß alle Felder der UF durchlaufen werden, auf den Typ Textbox und Länge größer Null geprüft werden, wobei die Schleife ein nicht gefülltes Feld aktiviert, eine Mitteilung ausgoibt und das weitere Vorgehen abbricht.

Gruß
only Coding

timmy84
15.09.2011, 12:05
hey danke für deine antwort, die reihenfolge wäre nicht so wichtig, könntest mir ein kleines bsp geben, auch nur für ne zelle! da leider meine vba kenntnisse sehr beschränkt sind ... :(

only Coding
15.09.2011, 12:23
Hallo, timmy84,

bei einem Formular in einer Tabelle kann auch mit Daten/Gültigkeit gearbeitet werden.

Bei Verwendung von VBA könnte man wie folgt vorgehen. In DieseArbeitsmappe der Mappe kommt der folgende Code:

Private Sub Workbook_Activate()
strAdresse = ActiveCell.Address
End Sub

Private Sub Workbook_Open()
strAdresse = ActiveCell.Address
End Sub
Hinter die Tabelle kommt dann der folgende Code, wobei hier das Vorgehen für die gesamte Tabelle gilt (ggf. den Bereich einschränken und per Intersect abfragen, ob die verlassene Zelle zum Bereich gehört):

Dim strAdresse As String

Private Sub Worksheet_Activate()
strAdresse = ActiveCell.Address
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Len(Range(strAdresse)) = 0 Then
With Application
.EnableEvents = False
Range(strAdresse).Activate
.EnableEvents = True
End With
End If
End Sub
HTH
only Coding

timmy84
15.09.2011, 12:34
hey only coding
vielen dank!

ich habe es so versucht, beim schliessen ohne auszufüllen funktioniert es also kommt die Meldung aber beim speichern geht es leider nicht!


Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Environ("Username") = "jinx" Then
ThisWorkbook.Close savechanges:=True
Else
If WorksheetFunction.CountA(Range("B3,B4,B5")) < 3 Then
Cancel = True
MsgBox "Bitte füllen Sie alle mit * markierten Felder aus!", vbInformation, "Fehler beim Ausfüllen"
End If
End If
End Sub



Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If WorksheetFunction.CountA(Range("B3,B4,B5")) < 3 Then
Cancel = True
MsgBox "Bitte füllen Sie alle mit * markierten Felder aus!", vbInformation, "Fehler beim Ausfüllen"
End If
End Sub

only Coding
15.09.2011, 12:44
Hallo, timmy84,

wenn mehr als eine Tabelle in der Mappe vorhanden ist, sollte der Name der Tabelle vorangestellt werden, damit die Anweisung nicht immer für die aktive Tabelle gilt.

Wenn sich beide Prozeduren in DieseArbeitsmappe befinden, sollte die Meldung in beiden Fällen erscheinen (tat es bei einer Prüfung in meiner Version von Excel).

Gruß
only Coding

only Coding
15.09.2011, 13:05
Hallo, timmy84,

mir ist ein Fehler unterlaufen.

Dim strAdresse As String
gehört nicht hinter die Tabelle, die Anweisung muss dort entfernt werden.

Stattdessen wird in einem Standardmodul die folgende Anweisung eingefügt:

Public strAdresse as String
normalerweise wird auch noch das Präfix g für Global der Variable vornagesetzt.

Gruß
only Coding