Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1816to1820
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Änderung mit Change Ereignis

Änderung mit Change Ereignis
03.03.2021 15:01:30
Lizzel
Hallo zusammen,
ich habe zwei Fragen:
1. Ich habe eine Gruppierung ("Überschrift" in A130, Klappfeld A131:A138), wenn ich jetzt in B130 ein "X" setze, soll in B131:B138 ebenfalls ein "X" erscheinen und wieder verschwinden, wenn ich das "X" in B130 lösche. (Spalte B ist für mich ein Auswahlfeld, das bei einem "X" später den Begriff aus A in einer anderen Tabelle sucht)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim k As Integer
i = 130
k = 138
If Cells(i, 2) = "X" Then
For i = i + 1 To k
Cells(i, 2) = "X"
Next i
Else
For i = i + 1 To k
Cells(i, 2) = ""
Next i
End If
End Sub

Nun setzt er das erste "X" in B131 und dann stürzt Excel ab. Weiß jemand warum?
2. Gibt es die Möglichkeit den Anfang und das Ende einer Gruppierung auszulesen? So das ich die oberen Grenzen ( i und k) automatisch setzen kann?
Zum Hindergrund: Ich habe mehrere Gruppierungen die regelmäßig erweitert werden und ich will nicht jedem Kollegen zumuten den Code anzupassen.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Änderung mit Change Ereignis
03.03.2021 15:16:03
Rudi
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "B2" Then
On Error GoTo ERREXIT
Application.EnableEvents = False
Target.Offset(1).Resize(8) = Target
End If
ERREXIT:
Application.EnableEvents = True
End Sub


AW: Änderung mit Change Ereignis
03.03.2021 15:30:11
Lizzel
Hallo Rudi,
das wirft jetzt leider mehr Fragen auf, als das es beantwortet.
Betrifft dein Code meine erste oder meine zweite Frage und was soll der machen (eine erste Google Suche war da wenig hilfreich)?
Danke schonmal!
Gruß Lars

AW: Änderung mit Change Ereignis
03.03.2021 15:36:40
Lizzel
Zu Frage 1 hat es mir jetzt doch etwas geholfen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim k As Integer
i = 130
k = 138
If Intersect(Target, Range("B12:B500")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Cells(i, 2) = "X" Then
For i = i + 1 To k
Cells(i, 2) = "X"
Next i
Else
For i = i + 1 To k
Cells(i, 2) = ""
Next i
End If
Application.EnableEvents = True
End Sub


Anzeige
AW: Änderung mit Change Ereignis
03.03.2021 15:43:17
Werner
Hallo,
ziemlich kompliziert
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B12:B500")) Is Nothing Then
Application.EnableEvents = False
Range("B12:B500") = Target
Application.EnableEvents = True
End If
End Sub
Gruß Werner

AW: Änderung mit Change Ereignis
03.03.2021 16:08:00
Lizzel
Hallo Werner,
stimmt, ohne Schleife ist es einfacher.
Wie kann ich jetzt das "Range("B2:B500) = Target" so anpassen, das er mir nur ein X zwischen i und k setzte (also Grenzen von außen angeben)?
Und wie schreibe ich das, dass er mir z.B. nur bei B131:B138 ein X setzt, wenn bei B130 ein X ist.
Jetzt setzt er mir ja immer ein X in meinem Range, egal wo ich das X setze.

Anzeige
AW: Änderung mit Change Ereignis
03.03.2021 16:32:03
Daniel
Hi
ob man alle Zellen, die zu einer Gruppierung gehören ermitteln kann, weiß ich nicht.
als Workaround kannst du folgendes tun:
1. füge am Anfang zwei Spalten ein, so das deine jetzige Spalte B zur Spalte D wird
2. in der Spalte A schreibst du in alle Zellen, die zu einer Gruppierung gehören (also A131:A138) ein "x" oder einen beliebigen anderen Text
die Überschriftenzeilen müssen leer bleiben
die Spalte B muss ebenfalls leer bleiben.
wenn du so deine Gruppen in Spalte A markiert hast; verwende folgenden Code im Modcul des Blatts:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
If Cells(Target.Row, 1) = "" Then
If Cells(Target.Row + 1, 1) = "x" Then
If Target.Cells.Count = 1 Then
Application.EnableEvents = False
Intersect(Target.EntireColumn, Cells(Target.Row + 1, 1).CurrentRegion.EntireRow) _
.Value = Target.Value
Application.EnableEvents = True
End If
End If
End If
End If
End Sub
damit wird dann, wenn du eine Überschriftenzeile änderst, der Text in die darunter liegenden Zellen übernommen.
die Markierung erfolgt in Spalte A. Wenn du die Gruppierung änderst dann musst du auch Spalte A anpassen, aber das geht auch bei vielen Gruppen ganz einfach:
1. alle Zellen der Spalte A mit "x" füllen
2. in der Gruppierung die Ebene 1 anzeigen lassen
3. Spalte A markieren und markierung auf "sichtbare Zellen" einschränken
4. inhalte löschen
fertig.
Gruß Daniel

Anzeige
AW: Änderung mit Change Ereignis
03.03.2021 16:50:55
Lizzel
Hallo Daniel,
das funktioniert super! Danke für deinen Code!
Gruß Lars

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige