Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: SelectionChange nur im bestimmten Bereich

SelectionChange nur im bestimmten Bereich
18.02.2018 18:52:52
Andy
Hallo alle zusammen , wie kann ich in einer
Selection Change Anweisung
Abhängig von der Variable „A“ einen Bereich definieren, wo er das Ereignis ausführen soll und wo nicht . Die Variable a wird abhängig von der Target.colum und / row 1 definiert und dann möchte ich quasi , dass ich das Ereignis nur zb in den Zeilen 12-17 ausführen. Wenn ich quasi in Zeile 18 was schreibe, dann soll das nicht beachtet werden.
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: SelectionChange nur im bestimmten Bereich
18.02.2018 18:56:30
Hajo_Zi

Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                  *
'* 21.06.15                                    *
'* erstellt von HajoZiplies@web.de             *
'* http://Hajo-Excel.de/
' Füllfarbe
' für Schrift RaZelle.Font.ColorIndex
Dim RaBereich As Range                          ' Variable für Bereich
Dim RaZelle As Range                            ' Variable für Zelle
Set RaBereich = Range("L22:M39, O21:O26")       ' Bereich der Wirksamkeit
' 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"))
' ab Vesion XP braucht der Schutz nicht aufgehoben werden
' Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
' 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, Target)
If Not RaBereich Is Nothing Then
'ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: SelectionChange nur im bestimmten Bereich
18.02.2018 19:28:41
Andy
Ups sorry. ..... Worksheet_Change ... Ereignis meinte ich. Und wie arbeite ich da die abghängigkeit meiner variable ein?
if a = "1" then ... dieser bereich
if a = "2" then ... dieser bereich
AW: SelectionChange nur im bestimmten Bereich
18.02.2018 19:51:37
Andy
Und dann steht noch die Frage aus, wo ich dann meine IF-Anweisung setze...:) Kann es sein, dass der Code abgeschnitten ist?
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                  *
'* 21.06.15                                    *
'* 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
If e = "A" Then RaBereich = Range("D11:APF15")
If e = "B" Then RaBereich = Range("D17:APF21")
If e = "C" Then RaBereich = Range("D23:APF27")
If e = "D" Then RaBereich = Range("D29:APF33")
If e = "E" Then RaBereich = Range("D35:APF39")  ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Target)
If Not RaBereich Is Nothing Then
For Each RaZelle In RaBereich
With RaZelle
If Target.Value = "F" And WertEintritt  "F" And g 

Anzeige
AW: SelectionChange nur im bestimmten Bereich
18.02.2018 19:52:07
Andy
AW: SelectionChange nur im bestimmten Bereich
18.02.2018 20:58:31
Andy
Aber zurück zur Problematik... Wie baue ich das letzte IF richtig ein ?
kann es sein...
18.02.2018 19:54:32
Werner
Hallo Andy,
...dass du ein Feedback in deinen anderen Beiträgen nicht für nötig hälst?
Gruß Werner
Anzeige
AW: kann es sein...
18.02.2018 19:56:28
Andy
Hallo Werner, eigentlich schon doch - ich bin jedem sehr dankbar, der einem weiterhelfen kann. Sollte ich es in dem einen oder anderen vergessen haben, dann tut es mir natürlich leid.
Werde mich bessern ;)
AW: kann es sein...
18.02.2018 19:57:50
Andy
das Problem ist aber, dass man bei manchen BEiträgen gar nichts mehr schreiben kann, wenn sie aus der Liste gefallen sind. SO auch der, auf dem du zuletzt geantwortet hast - da kann man dann nicht mehr schreiben, weil das antwortfeld weg ist...
Anzeige
ich frage mich, ...
18.02.2018 22:23:26
Uduuh
Hallo,
.. wie aufgrund dieser Fragestellung eine Antwort erwartet werden kann.
Schwammiger geht's kaum.
Gruß aus’m Pott
Udo

;
Anzeige
Anzeige

Infobox / Tutorial

Auswahländerung nur im definierten Bereich in Excel VBA


Schritt-für-Schritt-Anleitung

Um das Ereignis SelectionChange in Excel VBA nur für einen bestimmten Bereich auszuführen, befolge diese Schritte:

  1. Öffne das Excel-Dokument und wechsle in den VBA-Editor mit ALT + F11.

  2. Doppelklicke auf das Arbeitsblatt, in dem Du die SelectionChange-Anweisung nutzen möchtest.

  3. Füge den folgenden Code in das Arbeitsblatt-Modul ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim RaBereich As Range
       Dim RaZelle As Range
       Dim e As String
    
       ' Beispielvariable für die Spalte
       e = Target.Column
    
       ' Definiere den Bereich basierend auf der Variable e
       If e = 1 Then
           Set RaBereich = Range("A1:A10")
       ElseIf e = 2 Then
           Set RaBereich = Range("B1:B10")
       End If
    
       ' Überprüfe, ob die Änderung im definierten Bereich liegt
       Set RaBereich = Intersect(RaBereich, Target)
       If Not RaBereich Is Nothing Then
           For Each RaZelle In RaBereich
               ' Deine Aktionen hier
           Next RaZelle
       End If
    End Sub
  4. Ändere die Range-Angaben nach Bedarf, um den spezifischen Bereich anzupassen.

  5. Schließe den VBA-Editor und teste Deine Funktion, indem Du Werte in die definierten Zellen eingibst.


Häufige Fehler und Lösungen

  • Fehler: Der Code wird nicht ausgeführt, wenn ich in den nicht definierten Bereich schreibe.

    • Lösung: Stelle sicher, dass die Intersect-Funktion korrekt verwendet wird und dass der Bereich richtig definiert ist.
  • Fehler: Variablen sind nicht definiert.

    • Lösung: Überprüfe, ob alle Variablen deklariert sind und die richtigen Datentypen verwenden.

Alternative Methoden

Eine alternative Möglichkeit, die SelectionChange-Ereignis in einem bestimmten Bereich zu verwenden, ist die Nutzung von Worksheet_SelectionChange. Hier ein Beispiel:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        ' Aktionen, wenn der Bereich A1:A10 ausgewählt wird
    End If
End Sub

Diese Methode ist nützlich, wenn Du Aktionen beim Auswählen und nicht beim Ändern von Zellen durchführen möchtest.


Praktische Beispiele

  1. Farbe ändern: Wenn eine Zelle im Bereich A1:A10 geändert wird, soll die Hintergrundfarbe geändert werden:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
           Target.Interior.Color = RGB(255, 255, 0) ' Gelbe Farbe
       End If
    End Sub
  2. Wert überprüfen: Wenn der Wert in B1:B10 "Ja" ist, soll eine Nachricht angezeigt werden:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
           If Target.Value = "Ja" Then
               MsgBox "Wert ist Ja!"
           End If
       End If
    End Sub

Tipps für Profis

  • Nutze Application.EnableEvents = False, um zu verhindern, dass andere Ereignisse während der Ausführung des Codes ausgelöst werden. Vergiss nicht, es am Ende wieder auf True zu setzen.

  • Arbeite mit Select Case, um den Code übersichtlicher zu gestalten, anstatt viele If-Anweisungen zu verwenden.

Select Case e
    Case "A"
        Set RaBereich = Range("D11:APF15")
    Case "B"
        Set RaBereich = Range("D17:APF21")
    ' Weitere Fälle
End Select

FAQ: Häufige Fragen

1. Wie kann ich den Bereich dynamisch anpassen?
Du kannst die Range-Angaben basierend auf Benutzerinput oder anderen Zellen dynamisch definieren, indem Du Variablen verwendest.

2. Was passiert, wenn ich mehrere Bereiche definieren möchte?
Verwende die Union-Funktion, um mehrere Bereiche zusammenzufassen:

Set RaBereich = Union(Range("D11:D15"), Range("D17:D21"))

Diese Anleitung sollte Dir helfen, die SelectionChange-Ereignisse in Excel VBA effektiv zu steuern und gezielt in bestimmten Bereichen anzuwenden.

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