Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Musseingabe in Zelle





Frage

Hallo Zusammen, leider habe ich beim suchen nichts ensprechendes gefunden. Ich habe ein Tabelle, in der Retouren eingetragen werden sollen. Um die Belegschaft zur kompletten Erfassung zu zwingen, müssen ein paar "drastische" Eingriffe in das Blatt gemacht werden Praktisch ist immer die ganze Zeile auszufüllen (Spalten c6 - k6) In den Spalten f6:g25 [b] muss [/b]eine Eingabe erfolgen. Also entweder in f6 oder g6. Über die Gültigkeitsregel kann in Spalte G6:g25 nur ein "X" eingegeben werden. Kann man das irgendwie einrichten? Eventuell so eingerichtet, dass man nicht in die nächste Zeile kommt oder nicht in Spalte J und K springen kann. (Die man vielleicht auch als Pflichtfelder belegen sollte.) Vielen Dank schon mal vorab rooky

Antwort 1 von coros

Nabend rooky,

also so ganz weiß ich jetzt nicht, welches nun bei Deiner Datei alles Pflichfelder werden sollen. Ich habe Dir mal ein Beispielcode erstellt, bei dem die Pflichtfelder die Zelle F6 und G6 sind. Kopiere den VBA Code in die Tabelle, in der die Zellen F6 und G6 die Pflichtfelder sein sollen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(6, 6) = "" Or Cells(6, 7) = "" Then
MsgBox "Sie müssen erst die Zelle F6 und G6 ausfüllen!"
If Cells(6, 6) = "" Then
Cells(6, 6).Select
Else
Cells(6, 7).Select
End If
End If
End Sub


Bei dem Code müssen die Felder F6 und G6 ausgefüllt werden. Wenn beide oder nur eine Zelle nicht ausgefüllt sind, erscheint ein Hinweisfenster und die nicht ausgefüllt Zelle wird nach dem Schließen der Meldung wieder markiert.

Ich hoffe, das hilft Dir erst einmal weiter. bei Fragen melde Dich. Wenn Du nicht weißt, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitung Anleitung zum VBA Projekt “Tabelle" nach. Dort habe ich das bebildert beschrieben.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von rooky

Hallo Coros,
vielen herzlichen Dank für den Beispielcode.
Es steht noch nicht so ganz fest, was alles Pflichtfelder werden sollen, aber mit Sicherheit die, für die du schon das Coding geschrieben hast.
Ich habe es an einem Entwurf zu Hause ausprobiert und es funktioniert bestens. Diesen Part brauche ich bei Spalte J und K.

Bei F und G kann jeweils NUR eins ausgefüllt werden, dieses aber als ein Muss. Also ein entweder / oder.
In F wird eingtragen ob es sich um eine Store-Return handelt und bei G ob es sich um einen Kunden-Return handelt. Und beides gleichzeitig ist nicht möglich.

Falls es dafür noch eine Lösung gäbe wäre toll.
Dir noch einen schönen Abend wünschend.
rooky

Antwort 3 von rooky

Habe gerade noch etwas festgestellt.
Die Meldung kommt nur, wenn ich mit der Enter-Taste arbeite.
Geht es auch für die Tab resp. Cursor -Taste? Ich bewege mich ja von links nach rechts in der Tabelle

Grüsse aus der Schweiz
rooky

Antwort 4 von coros

Moin rooky,

nachfolgenden Code kopiere in das VBA Projekt der Tabelle, in dem die Pflichteingabe der Zellen erfolgen soll.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Address = "$F$6" And IsEmpty(Cells(6, 6)) And IsEmpty(Cells(6, 7)) Then
Cells(6, 6).Select
Else
If IsEmpty(Cells(6, 7)) And IsEmpty(Cells(6, 6)) Then
If ActiveCell.Address <> "$G$6" Then
MsgBox "Sie müssen erst die Zelle F6 oder G6 ausfüllen!", vbCritical, "Fehler!"
Cells(6, 7).Select
End If
End If
End If
End Sub


Bei dem Code muss in Zelle F6 oder G6 ein Eintrag erfolgen. Sind beide Zellen leer, kann kein Eintrag in einer anderen Zelle erfolgen und es erscheint eine Fehlermeldung. Erst wenn eine der beiden Zellen ausgefüllt wurden, können auch andere Zellen ausgefüllt werden.

Was mich mal interessieren würde, wann dürfen denn die Zellen nicht leer sein? Beim Speichern, beim Weiterarbeiten, beim Schließen? Wenn man das wüsste, könnte man den Code eventuell auch anders aufbauen um nicht bei jedem Zellenwechsel eine Abfrage starten zu müssn. Wenn z.B. beim Speichern oder beim Beenden diese Felder nicht leer sein dürfen, könnte man mit einem Workbook_BeforeSave oder Workbook_BeforeClose Ereignis die Zellen abfragen, ob sie leer sind und dem User dann geziehlt schreiben, welche Zellen noch ausgefüllt werden müssen. Also wenn der obige Code nicht ausreicht, dann schreib doch mal, wann eine Überprüfung stattfinden muss.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von 090365

Hallo,

bin nicht der Verfasser der Frage, würde mich aber für die Erweiterung interessieren.

Ich bräuchte die Abfrage, dass die Zellen ausgefüllt sein müssen und dass vor dem Schließen gespeichert und ausgedruckt wird.

MfG

Jochen

Antwort 6 von 090365

Habe was vergessen.

Wäre toll, wenn man pro Speichervorgang nur eine Eingabe machen könnte.


Danke Jochen

Antwort 7 von coros

Hi Jochen,

kopiere nachfolgenden Code in das VBA Projekt "DieseArbeitsmappe".

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If IsEmpty(Cells(6, 6)) Then
MsgBox "Sie müssen noch Zelle F6 ausfüllen!", vbCritical, "Fehler!"
Cancel = True
Cells(6, 6).Select
GoTo Ende
Else
Cancel = False
End If
If IsEmpty(Cells(6, 7)) Then
MsgBox "Sie müssen noch Zelle G6 ausfüllen!", vbCritical, "Fehler!"
Cancel = True
Cells(6, 7).Select
GoTo Ende
Else
Cancel = False
End If
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ThisWorkbook.Close True
Ende:
End Sub


Bei dem Code wird beim Beenden überprüft, ob die Zellen F6 und G6 nicht leer sind. Sind sie leer, erscheint ein Hinweis und der Vorgang zum Beenden wird durch die Zeile

Cancel = True

abgebrochen. Erst wenn beide Zellen nicht mehr leer sind, wird das aktuelle Blatt gedruckt und die Datei ohne Nachfrage gespeichert und die Datei beendet.

Unklar ist, was Du damit meinst, dass nur eine Eingabe pro Speichervorgang erfolgen darf. Da die Angabe sehr wage ist -über Deine wagen Angaben habe ich in Deinem anderen Beitrag schon etwas geschrieben- und ich keine Lust habe, mir einen Kopf darüber zu machen, was Du damit meinst, müsstest Du schonmal etwas mehr schreiben, was Du damit meinst, bzw. erreichen möchtest.
Ich glaube auch, dass alle weiteren Anfragen von Dir zu dem obigen Code in Deinem anderen Beitrag weiter fortführen sollten, da das ganze sonst sehr unübersichtlich wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.