Registriert seit: 03.06.2019
Version(en): 2016
30.09.2020, 19:22
(Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2020, 20:54 von WillWissen.
Bearbeitungsgrund: Unnötige Leerzeilen entfernt, Codetags
)
Hallo, ich habe wieder ein ungewöhnliches Thema. Wenn ich mein gesetzten, selektierten Bereich verlasse ... dann MsgBox "Sie haben den gesetzten Bereich verlassen"... Springe in den selektierten Bereich zurück.und erst wenn in aktiven Spalte, Zeile 4 ein Datum eingetragen wird dann darf man den selektierten Bereich wieder verlassen.Danke schon mal im Voraus!Das Makro fängt so an. Code: Sub EingangBuchen() ' msg = MsgBox("Sie Möchten ein EINGANG buchen?" & Chr(10) & Space$(8) & vbNewLine & "bitte auswählen:", vbYesNo)
If msg = vbYes Then Range("F4").Select Selection.End(xlToRight).Offset(0, 1).Select
'Inputbox Bestell Nr. eingeben
Dim LiefTxt As String LiefTxt = InputBox("Bitte Lieferschein Nummer eingeben:")
'Wenn nichts steht oder wert in der DATB nicht gefunden wird
If LiefTxt = "" Then MsgBox "Sie haben nichts eingegeben!" & Chr(10) & "Buchung wird abgebrochen!", 64, "FEHLER" ActiveCell.Offset(-1, 0).ClearContents ActiveCell.Offset(-2, 0).ClearContents Sheets("WAWI").Protect password:="0", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True 'Blattschutz aktivieren
Exit Sub
Else
Sheets("WAWI").Unprotect password:="0" ActiveCell.Value = LiefTxt MsgBox "Zellen für Buchungswerte sind freigegeben." & Chr(10) & Space$(2), 64, "INFO" Range(ActiveCell.Offset(3, 0), ActiveCell.Offset(100, 0)).Select 'Mein selektierter Bereich Selection.Locked = False Sheets("WAWI").Protect password:="0", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True 'Blattschutz aktivieren
End If End Sub
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
im Codemodul vom Tabellenblatt gibt es Ereignismakros. Dort nimmst Du das Ereignis Selection_Change und prüfst, ob das Datum da steht. Wenn nicht, gehst Du zurück in eine bestimmte Zelle.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 03.06.2019
Version(en): 2016
Hi, ich habe es ausprobiert nur komme nicht weiter.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column ?wie definiert man verlasse?? Then MsgBox "Spalte verlassen" End Sub
Registriert seit: 23.08.2018
Version(en): 2007
15.10.2020, 19:31
(Dieser Beitrag wurde zuletzt bearbeitet: 15.10.2020, 19:31 von opa_oli.)
Hallo,
ich hatte einen ähnlichen Fall nur über das Tabellenblatt verteilt mit mehreren Zellen Ich habe dies mit einem Worksheet_Change gelöst
Beispiel: Private Sub Worksheet_Change(ByVal Target As Range) ' Eintragsänderung in Spalte C If Target.Column = 3 Then If UCase(Target.Value) = "E" Then
... oder mit einer CASE-Abfrage.
Die Bedingung ist bei mir die Abfrage eines großen "E", bei Dir wäre es dann ein gültiges Datum und/oder die Zellposition mit Rücksprung zur Zelle..
Das kombiniert es meines Erachtens und ist anwendungsflexibler, als ein Selection_Change - was natürlich mehr Deiner Frage entspricht..
Ich hoffe, ich konnte etwas helfen.
Opa Oli
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, Wenn z. B. die Spalte C gesetzt wird dann prüfe, ob Du noch drin bist. If Target.Column <> 3 Then...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 03.06.2019
Version(en): 2016
Hi, ich denke das ich den Bereich zuerst als Variable setze und dann die SelectionChange anwende. Wäre das nicht besser doch leider finde ich nicht den Wurm???
Makro:EingangBuchen Sub AusgangBuchen()
ActiveCell.Offset(2, 0).Select Range(Selection, Selection.End(xlDown)).Select Selection.Locked = False
Dim BuchungsBereich As Range Set BuchungsBereich = Selection.Address
Makro: Tabellenblatt6 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Adress = BuchungsBereich Then Exit Sub Application.EnableEvents = False Target.BuchungsBereich.Select Application.EnableEvents = True End Sub
Registriert seit: 03.06.2019
Version(en): 2016
Hi, ich habe mein Vorhaben etwas falsch beschrieben. Mein Makro soll folgendes machen... Range.("A1").select Cells(ActiveCell.Row, ActiveCell.Column + 1).Select Range("ActiveCell").End(xlDown)).Select Dim strBereich As range / string (weiß nicht was richtig wäre) Set strBereich = Application.Selection (Aktuelken Bereich als Variable definieren, dieser verändert sich jedoch ständig) strBereich.Locked = False
Im Tabelle6(WAWI) habe ich das Ereignis Worksheet_SelectionChange eingegeben If strBereich <> Selection Then InputBox "Sie hab den Bereich verlassen. Soll der Bereich geschützt werden?, vbYesNo If yes Then strBereich.Locked = True StrBereich soll inaktiv bleiben (bis zum nächsten neuen Bereich) Else weiter überwachen (ob ich mich im strBereich befinde)
Kannst du mir bitte bei der Lösung helfen?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, im SelectionChange kannst Du den Target nutzen. Du prüfst dann mit INTERSECT ob sich die Bereiche überschneiden If Intersect(Target, strBereich) is Nothing ... oder je nachdem ... If not Intersect(Target, strBereich) is Nothing ... Da Deine Variable strBereich ein Bereich ist und nicht die Zelladresse das Bereichs würde ich sie übrigens rngBereich nennen. Muss man nicht, aber man sieht anhand rng gleich, was es sein müsste
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 03.06.2019
Version(en): 2016
Hallo shauan, danke für die schnelle Rückmeldung! Meinst du das so? Irgend wie funktioniert es nicht Tabelle6(WAWI)Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range)Dim rngBuchungsBereich As RangeIf Not Intersect(Target, Range(rngBuchungsBereich)) Is Nothing Then Dim Meldung As String Meldung = MsgBox("Sie haben den Buchungsbereich verlassen! Möchten Sie die Buchung abschließen?" & Chr(10) & Space$(8) & vbNewLine & "Bitte wählen:", vbYesNo) If Meldung = vbYes Then rngBuchungsBereich.Locked = TrueEnd IfEnd SubMODUL /mein MakroPublic Sub CommandButton1_Click()Range("A1").End(xlToRight).Offset(0, 1).Select "(Springe in Zelle A1 und rechts in nächste leere Zelle)"ActiveCell.End(xlDown).Offset(3, 0).Select "(Springe nach unten)"Range(Selection, Selection.End(xlDown)).Select "(Selektiere den Bereich nach unten)"Dim rngBuchungsBereich As Range "(Selektierten Bereich definieren)"Set rngBuchungsBereich = Application.Selection "(Aktuelle Auswahl/Selektion ist gleich rngBuchungsBereich)"rngBuchungsBereich.Locked = False "(rngBuchungsBereich entsperren)" End Sub
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
wenn Du in Deinem WorksheetChange die Variable rngBuchungsBereich nur dimensionierst, aber nix rein packst, was soll da passieren?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|