Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Selektion nicht zu lassen

Forumthread: Selektion nicht zu lassen

Selektion nicht zu lassen
18.07.2024 19:19:29
Thomas
Guten Abend,

ich habe diesen Code :
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

On Error GoTo Errorhandler

Select Case Sh.Name
Case "Montag", "Dienstag", "Mittwoch"
If Target.Count > 1 Then Exit Sub

Application.EnableEvents = False

If Not Intersect(Target, Range("M1:M209")) Is Nothing Then
If Target > "" And Not Target Like "Gruppe*" Then
varValues = Target.Value
Else
varValues = ""
End If
ElseIf Not Intersect(Target, Range("B3:K100")) Is Nothing Then
If varValues > "" Then
Target = varValues
varValues = ""
End If
End If
Case Else
End Select
Errorhandler:
Application.EnableEvents = True
End Sub

Mit dem Code kann ich in der Spalte M Klicken und in B3 bis K100 einfügen und das klappt sehr gut.
jetzt habe ich ein Problem das ich immer alles klicken kann. Es sollte vorher prüfen ob in der Spalte O der text siehe Info steht, dann soll eine Meldung kommen, Artikel kann nicht verschoben werden.
Als Beispiel: Artikel3 darf ich nicht verschieben, Artikel 4 darf ich verschieben, da in O nicht siehe Info steht

https://www.herber.de/bbs/user/171105.xlsb
Wäre sowas möglich ?

Danke schön
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selektion nicht zu lassen
18.07.2024 19:41:14
daniel
HI

dann bau doch einfach eine weitere Abfrage ein.
mit Target.Offset(0, 2) kannst du dann auf die Zelle in der Spalte O referenzieren.

If Not Intersect(Target, Range("M1:M209")) Is Nothing Then

If Target > "" And Not Target Like "Gruppe*" Then
If Target.Offset(0, 2).value = "???" Then


ein kleiner Tip:
verwende hier keine statische bzw modulweit gültige Variable, sondern schreibe den Inhalt der in Spalte M ausgewählten Zelle einfach in eine freie Zelle.
die kann auch ausgeblendet sein oder auf einem anderen Tabellenblatt liegen.
dann könntest du dir ohne weiteren Programmieraufwand über die Bedingte Formatierung die Zelle, die zu zuletzt ausgewählt hast, farblich markieren.
dann siehst du sofort, dass du im Verschiebemodus bist und welche Zelle du angeklickt hast.
ich fände das sehr komfortabel, für den Fall dass man mal beim Arbeiten abgelenkt wird.

Gruß Daniel
Anzeige
AW: Selektion nicht zu lassen
18.07.2024 19:49:22
Thomas
Hallo Daniel
Danke für deine Hilfe. Leider bin ich nicht so fit in vba.

Leider kommt bei case Else ein Fehler.
Fehler beim kompilieren.......
Case Else außerhalb von select case.

Was mache ich falsch ?

AW: Selektion nicht zu lassen
18.07.2024 21:32:31
daniel
ich bin in VBA vielleicht fitter als du, aber nicht im Hellsehen.
ich bin auch nicht so fit in der Computerei, als dass ich mich auf deinen Rechner einwählen könnte um zu schauen, was du so machst.
wenn ich dir sagen soll, was du falsch gemacht hast, dann musst du mir schon zeigen was du gemacht hast, am besten durch das hochladen der Datei mit dem Fehler.

die Fehlermeldung deutet aber darauf hin, dass du irgendwo im Code einen IF-Block oder eine For-Schleife nicht sauber mit End IF oder NEXT beendet hast.
das Problem bei diesem Typ von Meldung ist, dass der eigentliche Fehler nicht dort liegt, wo das System ihn erkennt.

wenn du hier eine zusätzliche IF-Abfrage hinzufügst, braucht diese auch ein END IF.
Hast du das vielleicht vergessen?


Gruß Daniel
Anzeige
AW: Selektion nicht zu lassen
18.07.2024 21:59:04
daniel
naja das was ich dir schon geschrieben habe.
jedes IF braucht ein END IF an der passenden stelle, also and der Stelle wo der Code weitermachen soll, wenn die Bedingung nicht erfüllt ist.

Da du diesen Code ja irgendwie erstellt haben musst (Von alleine schreibt sich keine code) solltest du auch wissen, an welcher stelle.
ist ja im Prinip das gleiche wie mit der Abfrage, ob die angeklickte Zelle (Target) nicht leer ist oder mit "Gruppe" beginnt.
die hast du ja auch selber programmiert.
Gruß Daniel
Anzeige
AW: Selektion nicht zu lassen
18.07.2024 23:24:38
Thomas
Hallo Daniel,
Dem Code habe ich aus einem forum und nu die Bereiche angepasst.
Ich weiß leider auch nicht wo ich die meldung einbauen muss.

Danke dir
AW: Selektion nicht zu lassen
19.07.2024 00:11:22
daniel
Naja da wo die anderen End Ifs stehen, mit denen du abfragst, ob die Aktion jetzt durchgeführt werden soll.

Du wirst doch sicherlich deinen Code lesen können und verstehst, was er macht, auch wenn du ihn nicht selbst geschrieben hast.

Anzeige
AW: Selektion nicht zu lassen
19.07.2024 00:49:56
Thomas
Hallo Daniel,
leider nicht 100 %ig.
jetzt habe ich ein End if und die MSG Box eingegeben und jetzt klappt es manchmal und dann wieder nicht.

https://www.herber.de/bbs/user/171117.xlsb

Danke für deine Hilfe
AW: Selektion nicht zu lassen
19.07.2024 10:14:14
daniel
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)


On Error GoTo Errorhandler

Select Case Sh.Name
Case "Montag", "Dienstag", "Mittwoch"
If Target.Count > 1 Then Exit Sub

Application.EnableEvents = False

If Not Intersect(Target, Range("M1:M209")) Is Nothing Then
If Target = "" Or Target Like "Gruppe*" Then
'nix machen
ElseIf Target.Offset(0, 2).Value = "siehe Info" Then
MsgBox " verschiebung nicht möglich"
Else
varValues = Target.Value
End If
ElseIf Not Intersect(Target, Range("B3:K100")) Is Nothing Then
If varValues > "" Then
Target = varValues
varValues = ""
End If
End If
Case Else
End Select
Errorhandler:
Application.EnableEvents = True
End Sub
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige