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

Zellwert bei Eingabe löschen

Zellwert bei Eingabe löschen
29.11.2021 13:30:13
Dom
Guten Tag zusammen,
ich hätte da einmal ein Problem, welches sich doch bestimmt einfacher als gedacht lösen lässt.
In meiner Tabelle habe ich in B1 ein Datum stehen. Dieses kann vom Anwender geändert werden.
Sobald das Datum geändert wird sollen mehrere Zellen in der gleichen Zeile (B5,B8,B10) geleert werden.
Falls das Datum in D1 geändert wird, dann natürlich die Zellen D5,D8,D10 leeren.
Gibt es hierzu eine einfache Lösung?
Über jeden Rat bin ich dankbar.
Beste Grüße
Dominic

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellwert bei Eingabe löschen
29.11.2021 13:35:23
{Boris}
Hi,
für Deine beiden genannten Zellen z.B. so (in das Codemodul des entsprechenden Tabellenblattes kopieren):

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address(0, 0) = "B1" Or .Address(0, 0) = "D1" Then
Cells(5, .Column).ClearContents
Cells(8, .Column).ClearContents
Cells(10, .Column).ClearContents
End If
End With
End Sub
VG, Boris
AW: Zellwert bei Eingabe löschen
29.11.2021 13:47:16
Dom
Funktioniert perfekt.
Vielen Dank dafür.
AW: Zellwert bei Eingabe löschen
29.11.2021 13:55:15
Dom
Wie müsste ich den Code bearbeiten, wenn die Tabelle einmal anders aufgebaut wird und ich bei Eingabe in B1 nicht B5,B8 etc. sondern D1,G1 leeren möchte?
VG Dominic
Anzeige
AW: Zellwert bei Eingabe löschen
29.11.2021 14:52:19
UweD
Hallo
hier mal eine Lösung, wo die deine Bereiche einfacher festlegen kannst.
Wichtig ist auch, dass vor beim Löschen von Zellen die Events ausgeschaltet werden (und nachher wieder ein)
Dieses Löschen ruft nämlich den Code erneut auf.
Bei einem möglichen Fehler sollte auch eine Fehlerbehandlung eingebaut sein, um die Events auf jeden Fall wieder einzuschalten

Private Sub Worksheet_Change(ByVal Target As Range)
Const APPNAME = "Worksheet_Change"
Dim RNG As Range
On Error GoTo Fehler
Set RNG = Union([B1], [B3])
If Not Intersect(RNG, Target) Is Nothing Then
Application.EnableEvents = False
If IsDate(Target) Then
Target.Offset(0, 2).ClearContents  'Zeilen versetzt / 2 Spalten versetzt // aus B wir D
Target.Offset(0, 5).ClearContents  'Zeilen versetzt / 5 Spalten versetzt // aus B wir G
Else
MsgBox Target & " ist kein gültiges Datum"
Application.Undo
End If
Application.EnableEvents = True
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Anzeige
AW: Zellwert bei Eingabe löschen
30.11.2021 13:09:48
Dom
Moin zusammen,
Lösung funktioniert soweit 1A. Habe jetzt allerdings das Problem, dass ich aufgrund der großen Anzahl an Zeilen die Variante mit RNG = Union nicht mehr verwenden kann.
Soweit ich weiß bzw. nachgelesen habe ist Union auf 30 Zellen anwendbar. Gibt es hierzu eine Lösung oder sollte man einfach eine weitere Abfrage einbauen?
Wenn Du mal...
30.11.2021 14:28:21
{Boris}
Hi,
...genau mitteilst, welche Zellen insgesamt genau überwacht werden sollen, dann kann man vielleicht auch eine mathematische Lösung finden, alternativ einen stringverketteten Range.
VG, Boris
AW: Wenn Du mal...
30.11.2021 15:01:19
Dom
Hi,
es handelt sich hierbei um eine erweiterbare Tabelle (an der Spaltenzahl ändert sich jedoch nichts), die aktuell noch aus 100 Zeilen besteht.
Demnach soll bei Änderung des Datums in B1 in der zur Zeile gehörenden Spalte D1 der Wert gelöscht werden. Bei Änderung des Datums in B100 der Wert in D100 usw.
VG Dominic
Anzeige
Ebenn bitte NICHT "usw." sondern...
30.11.2021 15:36:53
{Boris}
Hi,
...gib doch mal ganz konkret an, in welchen Zellen das passiert - oder in welchem einheitlichen Zeilenabstand / Spaltenabstand.
Oder ist es immer nur eine Änderung in Spalte B, die dann den Inhalt der korrespondierenden Zelle in Spalte D löschen soll?
VG, Boris
AW: Ebenn bitte NICHT "usw." sondern...
30.11.2021 15:41:59
Dom
Hi,
sry für Missverständnisse. Es soll lediglich der Inhalt der korrespondierenden Zelle in Spalte D gelöscht werden. Alle anderen Zellen bleiben unberührt.
VG
Dominic
AW: Ebenn bitte NICHT "usw." sondern...
30.11.2021 16:06:21
UweD
Dann versuch es so

Private Sub Worksheet_Change(ByVal Target As Range)
Const APPNAME = "Worksheet_Change"
On Error GoTo Fehler
If Target.Row > 1 Then ' Ggf wegen Überschrift
If Not Intersect(Columns(2), Target) Is Nothing Then 'Nur Spalte B
Application.EnableEvents = False
If IsDate(Target) Then
Target.Offset(0, 2).ClearContents  'Zeilen versetzt / 2 Spalten versetzt // aus B wir D
'weitere Zellen  Target.Offset(0, 5).ClearContents  'Zeilen versetzt / 5 Spalten versetzt // aus B wir G
Else
MsgBox Target & " ist kein gültiges Datum"
Application.Undo
End If
Application.EnableEvents = True
End If
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: Ebenn bitte NICHT "usw." sondern...
30.11.2021 16:16:59
GerdL
Moin

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
If Not Intersect(Target, Columns(2)) Is Nothing Then
For Each C In Intersect(Target, Columns(2))
If C.Row Mod 2 = 1 Then
If IsDate(C) Then Cells(C.Row, 4).ClearContents
End If
Next
End If
End Sub
Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige