Freigeben über

Default Value für DropDown Liste

Anonym
2023-01-27T14:33:46+00:00

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

Microsoft 365 und Office | Excel | Für Zuhause | Windows

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.

0 Kommentare Keine Kommentare
{count} Stimmen
Antwort, die vom Frageautor angenommen wurde
  1. Andreas Killer 144K Zuverlässigkeitspunkte Freiwilliger Moderator
    2023-01-28T10:49:33+00:00

    Mach ein

    if target.count > 1 then exit sub

    an den Anfang.

    Andreas.

    Eine Person fand diese Antwort hilfreich.
    0 Kommentare Keine Kommentare
Antwort, die vom Frageautor angenommen wurde
  1. Andreas Killer 144K Zuverlässigkeitspunkte Freiwilliger Moderator
    2023-01-27T15:02:13+00:00

    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

    Eine Person fand diese Antwort hilfreich.
    0 Kommentare Keine Kommentare

2 zusätzliche Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2023-01-28T11:38:41+00:00

    Aaaah perfekt, danke!!!

    0 Kommentare Keine Kommentare
  2. Anonym
    2023-01-28T10:35:12+00:00

    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

    0 Kommentare Keine Kommentare