Clever-Excel-Forum

Normale Version: Verlassen der aktiven Spalte/Bereich verhindern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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.
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
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
Hallöchen,
Wenn z. B. die Spalte C gesetzt wird dann prüfe, ob Du noch drin bist.
If Target.Column <> 3 Then...
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
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?
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 Smile
Hallo shauan, danke für die schnelle Rückmeldung!

Meinst du das so? Irgend wie funktioniert es nicht Huh

Tabelle6(WAWI)

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngBuchungsBereich As Range
If 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 = True

End If
End Sub



MODUL /mein Makro

Public 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
Hallöchen,

wenn Du in Deinem WorksheetChange die Variable rngBuchungsBereich nur dimensionierst, aber nix rein packst, was soll da passieren?