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.
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.
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
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
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.
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.
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
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
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".
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.
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.