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

Wert in Zeile automatisch einfügen

Forumthread: Wert in Zeile automatisch einfügen

Wert in Zeile automatisch einfügen
06.06.2025 11:01:31
NicoHendrik
Guten Morgen,

ich habe hier eine Tabelle wo in Spalte D automatisch der Wert von A8 eingetragen werden soll, wenn in der Spalte C ein Name eingetragen wurde. Wenn der Name in C wieder gelöscht wird, soll auch der dazugehörende Wert in D gelöscht werden.

Formel mäßig kann ich das, aber die Möglichkeit den Wert in D manuell zu verändern muss bestehen bleiben.

Das soll für Zeilen 9 bis 28 gelten.

Gruß Nico

https://www.herber.de/bbs/user/177682.xlsm
Anzeige

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eine...
06.06.2025 12:12:29
NicoHendrik
Vielen Dank an alle, eurer Code funktioniert super.

Eine Bitte hätte ich noch.

Wenn ich einen Name in C löschen möchte (also ich wähle die Zelle in C wo ein Name drin steht an) soll ein MsgBox mit "Wollen Sie wirklich den Name löschen" kommen.

Gruß Nico
Anzeige
AW: Eine...
06.06.2025 13:09:41
NicoHendrik
Danke Case und an alle andere, klappt jetzt alles bestens.

Gruß aus den hohen Norden
AW: Eine...
06.06.2025 14:03:21
NicoHendrik
Hallo Case,

gibt es auch die Möglichkeit wenn man mehrere Namen auf einmal löschen will, das nur einmal gefragt wird ob man die Namen löschen will?

Gruß Nico
AW: Eine...
06.06.2025 15:13:54
NicoHendrik
Danke klappt jetzt alles.

Gruß Nico
Anzeige
Frage zum Code
06.06.2025 14:27:46
daniel
Hi Case
zu deiner Lösung hätte ich zwei Fragen:
1. warum nicht einfach vor der Schleife abfragen, ob die Zellen leer sind?
dann braucht man diese aufwendige Konstruktion mit dem blnTMP nicht.

2. wäre es nicht sicherer, die Schleife nur über die Zellen des relevanten Bereichs zu führen?
For Each rngRange In Intersect(Target, Range("C9:C28")) 

theoretsich wäre es ja denkbar, dass der Anwender mit Copy-Paste oder Entfernen auch die Nachbarzellen in Spalte B oder D mit bearbeitet und dann passieren wahrscheinlich ungewollte Dinge, wenn die Schleife über Gesamt-Target läuft.

Gruß Daniel
Anzeige
Ja - die Frage ist...
06.06.2025 15:21:49
Case
Moin, :-)

... wie wird mit gearbeitet. Wird auch mal B4:D10 gelöscht? Ich warte in der Regel bis sich der Themenersteller meldet. ;-)
Letztendlich lässt sich alles abfangen. ;-)

Servus
Case
AW: Ja - die Frage ist...
06.06.2025 15:23:44
daniel
ja, aber das sind halt so einfache sachen, mit denen man rechnen muss und die ja auch nicht viel aufwand bedeuten.
eine Fehlerbehandlung baust du ja auch immer ein. Da finde ich sowas fast wichtiger.
Anzeige
AW: Ja - die Frage ist...
06.06.2025 16:41:15
NicoHendrik
Nur aus Interesse, gelöscht werden kann nur in C oder D. alles andere ist gesperrt.

Der Code funktioniert für meine Bedürfnisse hervorragend.

Gruß Nico
AW: Ja - die Frage ist...
06.06.2025 17:31:14
daniel
probier mal, was passiert wenn du bspw Werte in C9:D9 hast und diese per CopyPaste nach C10:D11 überträgst (in einem Kopiervorgang)
Gruß Daniel
Anzeige
AW: Ja - die Frage ist...
06.06.2025 19:12:38
NicoHendrik
Hallo Daniel,

wenn ich die Werte mit kopiere und sie dann mit Werte einfüge, ist alles Ok. Ein Kopiervorgang wurde aber nicht eingeplant, da der Name nicht 2x vergeben werden kann.

Gruß Nico
AW: Eine...
06.06.2025 12:47:22
daniel
Hi
naja, hellsehen kann VBA nicht. Es kann immer nur auf das reagieren, was du gemacht hast, aber nicht auf das, was beabsichtigst.
du kannst hier aber nach dem Löschen feststellen, ob gelöscht wurde und dann das ganze ungeschehen machen.

dazu musst du diesen Codeteil nich einbauen (also den Teil, der zwischen erster und letzter gezeiter Zeile steht kopieren und an dieser Stelle einfügen.

...

If Not Intersect(Target, Range("C9:C28")) Is Nothing Then
If Target(1).Value = "" Then
Select Case MsgBox("Wollen sie wirklich löschen?", vbYesNo)
Case vbYes
Case vbNo
Application.Undo
Application.EnableEvents = True
Exit Sub
End Select
End If
For Each rngRange In Target
....


Gruß Daniel
Anzeige
AW: Wert in Zeile automatisch einfügen
06.06.2025 11:23:28
GerdL
Moin Nico!
Private Sub Worksheet_Change(ByVal Target As Range)


Const cstrBereich = "C9:C28"

Dim C As Range

On Error GoTo fin

If Not Intersect(Target, Range(cstrBereich)) Is Nothing Then
Application.EnableEvents = False
For Each C In Intersect(Target, Range(cstrBereich)).Cells
If C > "" Then
C.Offset(0, 1) = Range("A8")
Else
C.Offset(0, 1).ClearContents
End If
Next
End If

fin:
Application.EnableEvents = True

End Sub

Gruß Gerd
Anzeige
AW: Wert in Zeile automatisch einfügen
06.06.2025 12:59:11
NicoHendrik
Danke Gerd, ich hab schon den Code von Case genommen. deiner funktioniert aber auch super.

Gruß Nico
AW: Wert in Zeile automatisch einfügen
06.06.2025 11:27:18
daniel
Hi
die Frage ist, ob es nicht sinnvoller ist, hier mit einer Zusatzspalte zu arbeiten, dh wenn nicht der der Wert aus A8 verwendet werden soll sondern ein anderer, trägst du diesen in die Spalte E ein, ansonsten bleibt E leer

in A9ff kommt dann diese Formel, welche - wenn C9 gefüllt ist, den Wert aus A8 nimmt wenn E9 leer ist und wenn E9 gefüllt ist, diesen.
=Wenn(C9="";"";Wenn(E9="";$A$8;E9)



wenn es per Makro sein soll, dann vielleicht damit im Modul des Tabellenblatts:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Zelle As Range
If Not Intersect(Target, Range("C9:C28")) Is Nothing Then
Application.EnableEvents = False
For Each Zelle In Intersect(Target, Range("C9:C28"))
If Zelle.Value = "" Then
Zelle.Offset(0, 1).Value = ""
Else
Zelle.Offset(0, 1).Value = Range("A8").Value
End If
Next
Application.EnableEvents = True
End If
End Sub


wobei dann noch die Frage wäre, was passieren soll, wenn der Anwender in C9 einen bereits vorhandenen Wert ändert, für diesen aber schon manueller Wert in D9 steht. Soll dieser dann mit dem Wert aus A8 überschrieben werden oder soll er stehen bleiben.

Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen