Mach ein
if target.count > 1 then exit sub
an den Anfang.
Andreas.
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Hi, ich würde gern eine DefaultValue setzen, und zwar immer, wenn die Zelle leer ist. Die Formel in die Zelle zu schreiben, funktioniert für mich nicht, da die Formel nach Füllen ja verschwindet. Meine Überlegung war, bei Änderungen in meiner Zelle zu prüfen, ob in der Spalte mit den DropDowns leere Zellen sind, wenn ja überschreiben. Nicht die beste Lösung es dann auszuführen, aber gut. Mein Ansatz:
Private Sub Worksheet_Change(ByVal Target As Range)
lastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
DropDownSpalte = Range("P3:" & Target.Column & last) 'das wirft einen Laufzeitfehler: Die Methode 'Range' für das Objekt '_Worksheet' ist fehlgeschlagen, ich denke da bei Target.Column kein Buchstabe sondern eine Zahl herauskommt
If Not Intersect(Target, Range("A4:O" & lastRow)) Is Nothing Then
For Each c In DropDownSpalte.Cells
If IsEmpty(c.Value) Then
c.Value = "Ja"
End If
Next
End If
End Sub
Danke für eure Hilfe
Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.
Mach ein
if target.count > 1 then exit sub
an den Anfang.
Andreas.
ich würde gern eine DefaultValue setzen, und zwar immer, wenn die Zelle leer ist.
=WENN(A1="";"Ja";A1)
Und wenn das "Ja" nur erscheinen soll wenn in B auch was ist
=WENN(A1="";WENN(B1<>"";"Ja";"");A1)
Und die Spalte in der diese Formeln drin ist nimmst Du für die weitere Auswertung.
Alles andere ist ein Versuch Excel ein bestimmtes Verhalten aufzuzwingen, das wird letzten Endes immer scheitern. Wir können einen Code schreiben der in einer bestimmten Spalte immer ein "Ja" in die Zelle schreibt, wenn a) in der Zeile irgendwo was geändert wird und die entsprechende Zelle in der Spalte leer ist. Naja... der Code unten ist mal grob ein Anfang.
Andreas.
Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
Dim JaSpalte As Range, JaZelle As Range
Set JaSpalte = Range("P:P")
Set JaZelle = Intersect(Target.EntireRow, JaSpalte)
Select Case JaZelle
Case "Ja", "Nein"
'Okay
Case Else
Application.EnableEvents = False
JaZelle = "Ja"
Application.EnableEvents = True
End Select
End Sub
Aaaah perfekt, danke!!!
Vielen lieben Dank für Deine Hilfe. Dein "grober Anfang" macht im Endeffekt schon das, was ich möchte. Nur beim Löschen von mehreren Zeilen bekomme ich einen Laufzeitfehler '13', Typen unverträglich. Ich habe versucht, nur dann ein "Ja" einzutragen, wenn die Kontrollzelle gefüllt ist. Mein Code sieht folgendermaßen aus:
Dim JaSpalte As Range, JaZelle As Range, KontrollSpalte As Range, KontrollZelle As Range
Set JaSpalte = Range("P:P")
Set JaZelle = Intersect(Target.EntireRow, JaSpalte)
Set KontrollSpalte = Range("F:F")
Set KontrollZelle = Intersect(Target.EntireRow, KontrollSpalte)
Select Case KontrollZelle
Case ""
'Okay
Case Else
Select Case JaZelle
Case "Ja", "Nein"
'Okay
Case Else
Application.EnableEvents = False
JaZelle = "Ja"
Application.EnableEvents = True
End Select
End Select