Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
488to492
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
488to492
488to492
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eingabe erzwingen

Eingabe erzwingen
27.09.2004 11:10:13
Tristan
Hallo!
Habe das Forum schon durchsucht und etliche Beiträge gefunden. Nur leider krieg ichs nicht hin!
Bei der im Anhang befindlichen Datei sollen alle orange eingefärbten Felder muss Felder sein (abgesehen von den Klick-Feldern). Habe es auch schon hinbekommen mit folgendem VBA-Script:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If ActiveSheet.Cells(1, 1).Value = "" Then
Do
wert = InputBox("Dies ist ein ´´Mussfeld´´, Sie müssen zwingend einen Wert eingeben", "Mussfeldeingabe")
Loop Until (wert <> "")
ActiveSheet.Cells(1, 1).Value = wert
End If
End Sub

Allerding müsste ich dann für jede Zelle ein VBA-Script erstellen, oder?
Wie kann man das abkürzen?
Danke schon mal!
https://www.herber.de/bbs/user/11349.xlt

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabe erzwingen
27.09.2004 11:32:37
Alwin
Hallo Tristan,
ich habe mir die Datei zwar nicht angeschaut, aber wenn es nicht allzu viele "Muss-Felder" sind kannst du dies einfach mit and verknüpfen:
If ActiveSheet.Cells(1, 1).Value = "" and ActiveSheet.Cells(2, 1).Value = "" and ...
Ein ähnliches Thema habe ich aktiv im Einsatz.
Gruß Alwin Ball
AW: Eingabe erzwingen
27.09.2004 12:47:12
yogi
Grüezi
gibt den MUSS-Feldern einen Namen, z.B. muss_1 bis muss_... Dann kannst du mit folgendem code die Abfrage machen:

Sub muss_prüfen()
Dim nn As Object
For Each nn In ActiveWorkbook.Names
' prüfen ob Feldname mit "muss_" beginnt
If InStr(1, nn.Name, "muss_", vbTextCompare) > 0 Then
' ja, fängt mit "muss_" an, prüfen ob leer
If Range(nn) = "" Then
' ist leer, also motzen
answ = MsgBox("Bitte Werte in " & nn & " eingeben!", vbOKOnly, "Mussfeld")
End If
End If
Next
End Sub

Anzeige
AW: Eingabe erzwingen
27.09.2004 13:01:02
yogi
Nochmals Grüezi
Gib den Feldern Namen der Form "muss_Stückzahl", "muss_Strasse" usw. Dann kann der Feldname auch in der Meldung angezeigt werden:

Sub muss_prüfen()
Dim nn As Object
For Each nn In ActiveWorkbook.Names
If InStr(1, nn.Name, "muss_", vbTextCompare) > 0 Then
If Range(nn) = "" Then
' Feldname extrahieren
feld_name = Mid(nn.Name, Len("muss_") + 1)
answ = MsgBox("Bitte Werte in """ & feld_name & """ eingeben!", vbOKOnly, "Mussfeld")
End If
End If
Next
End Sub

das wärs dann
ffpx
Yogi
AW: Eingabe erzwingen
Tristan
Mmh...ich glaub ich bin zu d....! Oder ist in Excel falsch eingestellt? Das Script muss doch unter Extras\Makro\VB-Editor\Meine Arbeitsmappe eingefügt werden, oder?
Dann noch den einzelnen Feldern einen Namen z.B: muss_absender, muss_empfaenger, etc. geben und es sollte laufen, oder?
Schonmal Thanx Yogi
Anzeige
AW: Eingabe erzwingen
27.09.2004 16:41:12
yogi
Dumme Fragen gibt's nicht, keine Fragen sind dumm!
mit folgendem code in der Arbeitsmappe wird die Prüfung aufgerufen, sofern der code in einem eigenen Module sitzt:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call muss_prüfen
End Sub

(Man kann natürlich anstelle von Call muss_prüfen auch den Code hinmalen.)
Achtung: Wird Excel geschlossen, ohne dass vorgängig gespeichert wurde, kommt die Frage "Mappe xxx speichern?", sagts du Ja, wird zwar das Makro ausgeführt und listet alle fehlenden Felder auf. Bevor du aber abspeicherst, musst du mal auf "abbrechen" klicken, sonst nützt alles nichts und die Mappe ist zu.
Gruss
yogi
Anzeige
AW: Eingabe erzwingen
Paula
hi tristan
Zwei Möglichkeiten, Einträge in Spalte A zu erzwingen:
1: wenn Zelleninhalt glöscht wird

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim wert
If Target.Column > 1 Then Exit Sub
If Target.Count > 1 Then      'Auswahl von mehren Zellen gleichzeitig verhindern!!
Cells(Target.Row, 1).Select
End If
If ActiveSheet.Cells(Target.Row, 1).Value = "" Then
Do
wert = InputBox("Dies ist ein ´´Mussfeld´´, Sie müssen zwingend einen Wert eingeben", "Mussfeldeingabe")
Loop Until (wert <> "")
ActiveSheet.Cells(Target.Row, 1).Value = wert
End If
End Sub

2: falls ausgewählte zelle in SP A leer ist

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wert
If Target.Column > 1 Then Exit Sub
If Target.Count > 1 Then    'Auswahl von mehren Zellen gleichzeitig verhindern!!
Cells(Target.Row, 1).Select
End If
If ActiveSheet.Cells(Target.Row, 1).Value = "" Then
Do
wert = InputBox("Dies ist ein ´´Mussfeld´´, Sie müssen zwingend einen Wert eingeben", "Mussfeldeingabe")
Loop Until (wert <> "")
ActiveSheet.Cells(Target.Row, 1).Value = wert
End If
End Sub

gruss Paula
Anzeige
AW: Eingabe erzwingen
Tristan
Bin manchmal schon ziemlich zerstreut...also habe es mit diesem Script hinbekommen und nicht mit dem vorher geposteten!
Problem: Kriege es nicht hin, mehr als ein Feld zu definieren, dass ein "Muss-Feld" ist.
Was noch super wäre, wenn nicht nur vor dem Speichern, sondern auch vor dem Drucken eine Meldung kommt, wenn ein Feld nicht gefüllt ist.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Cells(10, 10) = "" Then
MsgBox "Bitte Zelle ... ausfüllen" Cancel = True
End If
End Sub

Thanx
Tristan
Anzeige
AW: Eingabe erzwingen
Paula
hi tristan,
arbeite gerade an einer Lösung für das erste Problem, hab ein bissi Gedult
gruss paula
AW: Eingabe erzwingen
Tristan
Wie gesagt...bin manchmal ein bisschen durch den Wind...das Script, welches ich zu erst gepostet hab, ist ja dafür gedacht bei Änderung zu kontrollieren, ob eine bestimmte Zelle gefüllt ist. Mir wäre wichtig, vor dem Drucken oder Speichern oder beidem diese Kontrolle durchzuführen.
Sorry für die Verwirrung!!! Und ein riesieges Dankeschön!
Tris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige