Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Verlassen der aktiven Spalte/Bereich verhindern
#1
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
Antwortento top
#2
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-2016)
Antwortento top
#3
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
Antwortento top
#4
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
Antwortento top
#5
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-2016)
Antwortento top
#6
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
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste