Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
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

Mehre Zellen leeren wenn geändert wird

Mehre Zellen leeren wenn geändert wird
07.05.2020 21:30:51
Yzerreter
Hallo Zusammen,
in einer Liste habe ich mittels VBA ein OnChange Event zusammengesucht welches super funktioniert.
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address(False, False)
Case "D4"
Application.EnableEvents = False
Union(Range("E4"), Range("F4"), Range("G4"), Range("H4")).ClearContents
Application.EnableEvents = True
Case "E4"
Application.EnableEvents = False
Union(Range("F4"), Range("G4"), Range("H4")).ClearContents
Application.EnableEvents = True
Case "F4"
Application.EnableEvents = False
Union(Range("G4"), Range("H4")).ClearContents
Application.EnableEvents = True
Case "G4"
Application.EnableEvents = False
Range("H4").ClearContents
Application.EnableEvents = True
End Select
End Sub
Nun möchte ich ja nicht für jede Zeile 4 bis 999999 diesen Part kopieren. Wie kann ich E4 durch aktuelle Zelle ersetzen und dannach die anderen auch.
Ich hoffe es ist einfacher als ich denke, leider hat recherche nicht das Ergebnis geliefert was ich nutzen kann.
Vielen Dank

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehre Zellen leeren wenn geändert wird
07.05.2020 22:36:11
michlchen80
Target ist die aktuelle Zelle...
wenn du also in E4 was änderst, dann ist E4 Target.
Wenn du in Z381 was änderst dann ist das Target.
Was willst du denn genau machen?
so wie ich es raus lese, willst du in der gleichen zeile nach hinten raus die formate löschen richtig?
also in spalte D soll E-H, bei G nur die H...
Select Case Target.Column
Case 4  '=D
Application.EnableEvents = False
Union(Range("E"&Target.row), Range("F"&Target.row), Range("G"&Target.row), Range("H"&Target.row) _
).ClearContents
Application.EnableEvents = True
Case 5
Application.EnableEvents = False
Union(Range("F"&Target.row), Range("G"&Target.row), Range("H"&Target.row)).ClearContents
Application.EnableEvents = True
Case 6
Application.EnableEvents = False
Union(Range("G"&Target.row), Range("H"&Target.row)).ClearContents
Application.EnableEvents = True
Case 7
Application.EnableEvents = False
Range("H"&Target.row).ClearContents
Application.EnableEvents = True
End Select
Dürfte funzen...
Ginge aber auch etwas eleganter hehe
Anzeige
AW: Mehre Zellen leeren wenn geändert wird
07.05.2020 22:43:19
Yzerreter
Hi,
also um etwas genauer zu werden.
Ich habe eine Liste die gefüllt werden soll.
In Spalte D4 kommt ein Dropdown mit Spender, Einkauf, Verkauf. Wenn dieser Wert eben geändert wird sollen die Spalten "E" "F" "G" "H" geleert werden, damit keine Falschen Inhalte übernommen werden.
Der obige Code funktioniert eben für die Zeile 4 wunderbar. Jenachem welche Spalte geändert wird, wird nach hnten geleert.
KOmmt aber nun Zeile 5 Hinzu funktioniert es eben nicht mehr, logisch. ABer statt nun jede Zeile einzeln zu nehmen, würde ich gerne den obigen Coe so abändern das aus D4 (beispiel) eben D akzuelle Zeile wird.
Werde dein Script mal testen.
Was heisst den eleganter ? :D
Greez
Anzeige
AW: Mehre Zellen leeren wenn geändert wird
08.05.2020 07:33:21
hary
Moin
Etwas eleganter ;-)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column >= 4 And Target.Column  3 Then
Application.EnableEvents = False
Cells(Target.Row, Target.Column + 1).Resize(1, 8 - Target.Column).ClearContents
Application.EnableEvents = True
End If
End Sub

gruss hary
AW: Mehre Zellen leeren wenn geändert wird
08.05.2020 22:53:21
michlchen80
und wenn du später mal nicht nur bis H, sondern wegen neuer spalten bis ganz zum Ende (also vielleicht dann N) leeren willst, kannst du auch mit
l_col=cells(target.row,columns.count).end(xltoleft).column

die dann letzt gefüllte spalte finden und die 8 mit l_col ersetzen.
wäre noch eleganterer :-)
weil du sonst jedes mal den quellcode ändern musst, wenn du mal ne spalte dazu nehmen willst
geht allerdings nur, wenn du danach nichts weiter hast! mit dem end und dann columns.end oder auch rows.count und xl(up) bekommst du die zuletzt befüllte zeile oder spalte...
Anzeige
AW: Mehre Zellen leeren wenn geändert wird
08.05.2020 11:01:42
GerdL
Hallo,
so auch! :-)
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If Not Intersect(.Cells, Range("D4:G" & Rows.Count)) Is Nothing Then
If .CountLarge = 1 Then
Application.EnableEvents = False
Range(.Offset(0, 1), Cells(.Row, 8)).ClearContents
Application.EnableEvents = True
End If
End If
End With
End Sub

Gruß Gerd

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige