Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Target Bereich mit Zellen vergleichen

Forumthread: Target Bereich mit Zellen vergleichen

Target Bereich mit Zellen vergleichen
Domtsgi
Hallo zusammen
Ich möchte beim Auswählen eines Bereiches abhängig vom Wert einer Zelle einen Eintrag verhindern.
so in etwa:
'

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' if ausgewählter Bereich (target.adress) "A4:E4" and Wert in "F4" = 1 then range "A1" and exit  _
_
sub
' if ausgewählter Bereich (target.adress) "A5:E5" and Wert in "F5" = 1 then range "A1" and exit  _
_
sub
' if ausgewählter Bereich (target.adress) "A150:E150" and Wert in "F150" = 1 then range "A1"and  _
_
exit sub
' End Sub

könnt ihr mir weiterhelfen?
Besten Dank und Gruss
Domtsgi
Anzeige
AW: Target Bereich mit Zellen vergleichen
17.12.2011 14:02:48
Hajo_Zi
löse es doch ohnev Makro über Daten, Gültigkeit.
Tabelle1
 ABCDEF
35          1
36    979     

Daten, Gültigkeit
Zelle Zulassen Daten Wert1 Wert2 Leere Zellen ignorieren Zellendropdown Titel Eingabemeldung Eingabemeldung Titel Fehler Fehlermeldung
A35BenutzerdefiniertZwischen=$F351     Wahr            
B35BenutzerdefiniertZwischen=$F351     Wahr            
C35BenutzerdefiniertZwischen=$F351     Wahr            
D35BenutzerdefiniertZwischen=$F351     Wahr            
E35BenutzerdefiniertZwischen=$F351     Wahr            
A36BenutzerdefiniertZwischen=$F361     Wahr            
B36BenutzerdefiniertZwischen=$F361     Wahr            
C36BenutzerdefiniertZwischen=$F361     Wahr            
D36BenutzerdefiniertZwischen=$F361     Wahr            
E36BenutzerdefiniertZwischen=$F361     Wahr            

Tabellendarstellung in Foren Version 5.47



Anzeige
AW: Target Bereich mit Zellen vergleichen
17.12.2011 14:24:06
Domtsgi
Hallo Hajo_Zi
besten Dank für dein Lösungsansatz.
Das Problem ist, das diverse User Daten eingeben oder Daten rein- kopieren oder sonst irgendwie die Möglichkeit besteht, dass die Gültigkeit aus den Zellen gelöscht wird.
Ich muss es über VBA lösen.
Gruss Domtsgi
AW: Target Bereich mit Zellen vergleichen
17.12.2011 14:39:56
Hajo_Zi
es werden alle Werrte in dem Bereich gelösch, falls in F eine 1 steht.
Option Explicit                             ' Variablendefinition erforderlich
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'* H. Ziplies                                     *
'* 17.12.11                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("A:E")
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' Zelle die in dem Bereich liegen auf die Variable schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Application.EnableEvents = False
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
If Cells(RaZelle.Row, 6) = 1 Then
MsgBox "In Zelle " & RaZelle.Address & " darf nichts geschrieben werden!!!"
RaZelle = ""
End If
Next RaZelle
Application.EnableEvents = True
'ActiveSheet.protect ("Passwort")
End If
Set RaBereich = Nothing                 ' Variable leeren
End Sub

Gruß Hajo
Anzeige
AW: Target Bereich mit Zellen vergleichen
17.12.2011 14:51:42
Domtsgi
Hallo Hajo_Zi
genau das habe ich gesucht! Super, funktioniert bestens.
Besten Dank
Gruss Domtsgi
AW: Target Bereich mit Zellen vergleichen
17.12.2011 15:03:13
Hajo_Zi
eigentlich mußt Du noch verhindern das jemand den Wert in Spalte F ändert. Falls Du ihn ändern willst, Makros nicht aktivieren.
Option Explicit                             ' Variablendefinition erforderlich
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'* H. Ziplies                                     *
'* 17.12.11                                       *
'* erstellt von HajoZiplies@web.de                *
'* http://Hajo-Excel.de/
Dim RaBereich As Range                  ' Variable für Bereich
Dim RaZelle As Range                    ' Variable für Zelle
' Bereich der Wirksamkeit
Set RaBereich = Range("F:F")
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
MsgBox "In Spalte F darf nichts eingetragen werden"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Else
' Bereich der Wirksamkeit
Set RaBereich = Range("A:E")
' noch mehr Bereiche
'Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17"), _
'    Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49"), _
'    Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81"), _
'    Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111"), _
'    Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139"), _
'    Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163"), _
'    Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191"))
' Zelle die in dem Bereich liegen auf die Variable schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Application.EnableEvents = False
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
If Cells(RaZelle.Row, 6) = 1 Then
MsgBox "In Zelle " & RaZelle.Address & " darf nichts geschrieben werden!!!"
RaZelle = ""
End If
Next RaZelle
Application.EnableEvents = True
'ActiveSheet.protect ("Passwort")
End If
End If
Set RaBereich = Nothing                 ' Variable leeren
End Sub

Das mit den Makros nicht aktivieren können die anderen auch machen, da nützt das Makro nichts.
Gruß Hajo
Anzeige
AW: Target Bereich mit Zellen vergleichen
17.12.2011 14:47:24
hary
hallo
so?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
If .Column  3 And .Row 

gruss hary
AW: Target Bereich mit Zellen vergleichen
17.12.2011 14:55:25
Domtsgi
Hallo hary
ich habe die Lösung von Halo_Zi getestet und dies funktioniert. (und ich kann diese sogar nachvollziehen)
besten Dank aber auch an dich
Gruss Dominique
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige